Имя: Пароль:
IT
Веб-мастеринг
MySQL запрос, вернуть строки где есть любое из значений другой таблицы
0 sysadminlk
 
29.01.25
20:41
Подскажите пожалуйста как можно получить строки таблицы а где есть значения из таблицы б.

Справочник товаров - таблица `goods`
Набор характеристик - таблицы `specs`

В таблице `goods` есть товар например 'Ноутбук 8Гб DDR4'

Как его найти с помощью набора характеристик?

SELECT * FROM goods WHERE EXISTS IN (SELECT value FROM specs WHERE goods.name LIKE '%specs.value%' AND (specs.value = 'DDR4' OR specs.value = 'DDR5'))
1 sysadminlk
 
29.01.25
20:43
В таблице характеристик там строки
DDR3
DDR4
DDR5
8Гб
и др
2 sysadminlk
 
29.01.25
21:03
Блин. Сори.
Уже нашел как

SELECT name
FROM goods
WHERE EXISTS (
    SELECT 1
    FROM specs
    WHERE goods.name LIKE CONCAT( '%', specs.value, '%' )
)
3 Волшебник
 
29.01.25
21:39
Чушь
4 Greeen
 
29.01.25
21:58
(2) да, в этом запросе вы сейчас нафиговертите непонятно чего

Соединяйте по ключевому полю (типа WHERE goods.ID  = specs.ParentID, или как у вас там связаны таблицы)
5 sysadminlk
 
30.01.25
04:56
(4) у них нет связи по ID только через LIKE %% приходится
6 AAA
 
30.01.25
08:10
(5)Зачем тогда вообще эта таблица характеристик? По сути это просто критерии поиска того, что есть в наименовании. Или я чего то не понимаю, или таблица характеристик даром не нужна
7 stix2010
 
30.01.25
09:46
(2) (5) Это типа характеристики указаны в наименовании товара? Зачем тогда вообще таблица specs?
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс