Какой SQL-select: MySQl выборка один-ко-многим с объединением? Помогите с запросом SQL:
Задача:
Есть таблица (id, tovar_id, data) связь один ко многим, т.е. у tovar_id может быть несколько значений data, где каждое значение записывается в виде отдельной записи
Надо:
Составить выборку - вывести список tovar_id, где ОДНОВРЕМЕННО нексолько разных значений data (по списку). Т.е. не список всех записей по каждому входжению значения data, а список tovar_id, где ОДНОВРЕМЕННО встречаются ВСЕ перечисленные значения data
Т.е. надо не по отдельности data 6 или 7, а только те tovar_id, где есть запись и для data 6 и для data 7, т.е. не показывать tovar_id, где есть data 6, а нет data 7
Как правильно составить запрос?

21 Авг 2019 в 06:28
173 +1
0
Ответы
1

Для такого запроса можно использовать оператор GROUP BY в сочетании с условием HAVING COUNT(DISTINCT data) равным количеству перечисленных значений data.

Пример SQL-запроса:

SELECT tovar_id
FROM table_name
WHERE data IN ('значение1', 'значение2', 'значение3')
GROUP BY tovar_id
HAVING COUNT(DISTINCT data) = 3;

В данном случае вместо 'значение1', 'значение2', 'значение3' нужно указать перечисленные значения data, для которых нужно получить список tovar_id. Также необходимо заменить table_name на название вашей таблицы.

Этот запрос вернет список tovar_id, у которых одновременно есть записи для всех указанных значений data.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир