powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL-запрос - получить уникальные значения в таблице по условию
7 сообщений из 7, страница 1 из 1
SQL-запрос - получить уникальные значения в таблице по условию
    #39249618
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы

order
Код: html
1.
2.
3.
||order_id||other_field||
| 777      | field_1    |
| 999      | field_2    |


order_history
Код: html
1.
2.
3.
4.
5.
6.
||order_history_id||order_id||     comment    ||
|        1         |  777    | ...comment_A... |
|        2         |  777    | ...comment_B... |
|        3         |  777    |      (NULL)     |
|        4         |  999    | ...comment_С... |
|        5         |  999    | ...comment_B... |


Нужно объединить эти таблицы и получить такую

Код: html
1.
2.
3.
||order_id||other_field||     comment     ||
| 777      | field_1    | ...comment_A...  |
| 999      | field_2    |      (NULL)      |



Во-первых, так не получится, потому что JOIN-ить нужно по order_id, а в order_history это поле множественное.

Во-вторых, у меня есть еще условие:

Если в таблице order_history для конкретного order_id несколько записей, то берем ту, где поле comment содержит "comment_A"
Если в таблице order_history для конкретного order_id одна запись, и поле comment содержит "comment_A" - берем ее
Если в таблице order_history для конкретного order_id одна запись, и поле comment НЕ содержит "comment_A" - заполняем поле NULL-ом

Насколько мне видится, нужно создать временную таблицу order_history_tmp
Заполнить ее данными из order_history по правилам, которые описаны выше

А потом уже JOIN-ить order и order_history_tmp

Вопрос - как составить такой запрос для наполнения tmp таблицы?
Или может есть другие варианты?

Буду благодарен за помощь.
...
Рейтинг: 0 / 0
SQL-запрос - получить уникальные значения в таблице по условию
    #39249739
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rezhisserЕсли в таблице order_history для конкретного order_id несколько записей, то берем ту, где поле comment содержит "comment_A"А если записей несколько, но такого comment нет?

rezhisserНасколько мне видится, нужно создать временную таблицу order_history_tmp
Сказки. Нафиг не нада...
...
Рейтинг: 0 / 0
SQL-запрос - получить уникальные значения в таблице по условию
    #39249978
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaА если записей несколько, но такого comment нет?
Тогда заполняем NULL

AkinaСказки. Нафиг не нада...

И как тогда?
...
Рейтинг: 0 / 0
SQL-запрос - получить уникальные значения в таблице по условию
    #39249985
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rezhisserТогда заполняем NULLТо есть получается-то похрен, сколько записей. чего ты там так расписывал, спрашивается... да и запрос, мягко говоря, простейший:
Код: sql
1.
2.
3.
4.
SELECT o.order_id, o.other_field, oh.comment
FROM order o
LEFT JOIN order_history oh
  ON o.order_id = oh.order_id AND oh.comment = 'comment_A'
...
Рейтинг: 0 / 0
SQL-запрос - получить уникальные значения в таблице по условию
    #39250004
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Так я получу только записи, где есть comment содержит comment_A

А мне нужна вся таблица order с колонкой comment, в которой будет:
либо значение comment_A (если оно есть в поле comment для конкретного order_id в таблице order_history),
либо значение NULL (если для конкретного order_id в таблице order_history в поле comment нет значения с comment_A)
...
Рейтинг: 0 / 0
SQL-запрос - получить уникальные значения в таблице по условию
    #39250020
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rezhisserAkina,

Так я получу только записи, где есть comment содержит comment_A

А мне нужна вся таблица order с колонкой comment, в которой будет:
либо значение comment_A (если оно есть в поле comment для конкретного order_id в таблице order_history),
либо значение NULL (если для конкретного order_id в таблице order_history в поле comment нет значения с comment_A)

Беру свои слова обратно. Все работает... Вчера ночью вроде бы так делал и получал не ту выборку.

Спасибо)
...
Рейтинг: 0 / 0
SQL-запрос - получить уникальные значения в таблице по условию
    #39250029
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rezhisserвроде бы так делалнаверняка в where условие пихал
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL-запрос - получить уникальные значения в таблице по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]