NK
Size: a a a
NK
A
A
A
NK
A
A
NK
A
A
A
СК
items
, и есть таблица items_meta
с колонками item_id
, key
, value
. надо выбрать такие items
, которые имеют записи в items_meta
, например что для записи существует meta key=key1 and value=value1
и существует запись key=key2 and value=value2
(обязательно надо несколько условий)SELECT ...
FROM
...
items
JOIN (
SELECT
item_id,
GROUP_CONCAT(CONCAT_WS('=', key, value) SEPARATOR ';')
FROM items_meta
) AS grouped_meta
ON
items.id = item_id
AND LOCATE('key1=value1', grouped_meta)
AND LOCATE('key2=value2', grouped_meta)
NK
СК
A
SELECT ...
FROM
...
items
JOIN (
SELECT
item_id,
GROUP_CONCAT(CONCAT_WS('=', key, value) SEPARATOR ';')
FROM items_meta
) AS grouped_meta
ON
items.id = item_id
AND LOCATE('key1=value1', grouped_meta)
AND LOCATE('key2=value2', grouped_meta)
NK
SELECT ...
FROM
...
items
JOIN (
SELECT
item_id,
GROUP_CONCAT(CONCAT_WS('=', key, value) SEPARATOR ';')
FROM items_meta
) AS grouped_meta
ON
items.id = item_id
AND LOCATE('key1=value1', grouped_meta)
AND LOCATE('key2=value2', grouped_meta)
A
СК
LOCATE '%...%'
, только быстрее по бенчмаркамСК
A
key=key1 and value=value1
и существует запись key=key2 and value=value2