Поиск группы значений по одному запросу mySQL
Как мне сделать поиск по таблице и найти похожие строки зная только vendor_code?
Сейчас таблица выглядит так:
Желаемый результат:
Сейчас поиск делаю в 2 этапа:
Сначала зная vendor_code ищу group_id, а уже потом зная group_id ищу похожие позиции.
$sql_result_1 = $SQL->link()->query("
SELECT
product_m205r1G6NHNs.group_id
FROM
product_m205r1G6NHNs
WHERE
product_m205r1G6NHNs.vendor_code
LIKE
4059729329264")->fetch_all(MYSQLI_ASSOC);
$sql_result_2 = $SQL->link()->query("SELECT product_m205r1G6NHNs.vendor_code,
brand_m205r1G6NHNs.brand, title_m205r1G6NHNs.title, color,
country_m205r1G6NHNs.country, category_m205r1G6NHNs.category,
price_old, price_new, image_id, group_id, caption_m205r1G6NHNs.caption, product_m205r1G6NHNs.show_active
FROM product_m205r1G6NHNs
INNER JOIN brand_m205r1G6NHNs ON (brand_m205r1G6NHNs.id = product_m205r1G6NHNs.brand_id)
INNER JOIN category_m205r1G6NHNs ON (category_m205r1G6NHNs.id = product_m205r1G6NHNs.category_id)
INNER JOIN title_m205r1G6NHNs ON (title_m205r1G6NHNs.id = product_m205r1G6NHNs.title_id)
INNER JOIN caption_m205r1G6NHNs ON (caption_m205r1G6NHNs.id = product_m205r1G6NHNs.title_id)
INNER JOIN country_m205r1G6NHNs ON (country_m205r1G6NHNs.id = product_m205r1G6NHNs.country_id)
WHERE product_m205r1G6NHNs.group_id LIKE {$sql_result_1 ['group_id']}
AND product_m205r1G6NHNs.show_active = 1")->fetch_all(MYSQLI_ASSOC);
Можно ли как-то данную задачу решить по человечески и не делая по 2 запроса к БД?
Ответы (1 шт):
Автор решения: Tymofii
→ Ссылка
Может быть немного странный подход, но он работает... =\
CREATE FUNCTION return_group_id (vendor_codes bigint)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE groupID INT;
SELECT group_id INTO groupID;
FROM product_m205r1G6NHNs
WHERE vendor_code
LIKE vendor_codes;
RETURN groupID;
END
SELECT * FROM product_m205r1G6NHNs WHERE group_id LIKE return_group_id(4059729334718);

