Поиск группы значений по одному запросу 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);
→ Ссылка