|
MySQL запрос, вернуть строки где есть любое из значений другой таблицы
stix2010, Fedor-1971, arsik, serpentt, kir-g, Kongo2019, Лирик, AlexKimp, KJlag, DimR_71, Мыхалыч, lEvGl, AAA, RVN, Zamestas, Александр111, XLife, dmt, sysadminlk, ADirks, U4Me2, AutoAns
| ☑ |
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?
|
|