Функциональность расширенного поиска - SQL - PullRequest
0 голосов
/ 14 декабря 2018

Я работаю над расширенным поиском на моем сайте.В основном данные, над которыми я работаю, хранятся в двух таблицах.

Первая таблица содержит основную информацию о продукте (1 строка = 1 продукт, поэтому он уникален).Структура таблицы может выглядеть следующим образом:

id, title, description

Вторая таблица содержит больше информации о продукте.Продукт может не иметь каких-либо строк здесь.Однако один продукт может хранить во второй таблице несколько строк.Более того, данные из второй таблицы должны использоваться для расширенного поиска.Структура таблицы может выглядеть следующим образом:

id, item_id (from table 1), value_id (from another table), value

Я хочу выбрать только те продукты (таблица 1), для которых задан value_id (из столбца 2):

... WHERE table1.item_id = 5 AND table2.value_id = 1000

Как я уже упоминал ранее- таблица 2 может содержать, но не обязательно, какие-либо строки, связанные item_id с таблицей 1.

Я пытался использовать функцию JOIN / LEFT JOIN в SQL, но в этом случае, когда продукт имеет 3 строкив таблице 2 - результат запроса возвращает 3 строки вместо 1 или 0 (если не найдено никаких результатов).

Как с этим справиться?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы хотите выбрать продукты.Так что выберите из таблицы продуктов.Вы хотите выбрать только те, для которых существует определенный атрибут.Поэтому создайте условное предложение WHERE.Поскольку вы хотите искать данные в другой таблице, вы можете использовать EXISTS или IN.

select *
from items
where id in (select item_id from item_values where value_id = 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...