Как получить все результаты из другой таблицы в одном поле для каждой строки на основе идентификатора - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь вывести в одну строку все названия магазинов, в которых продается каждая марка.

Это мои таблицы: tables

Это код, который я использую до сих пор в mysql (phpmyadmin):

SELECT tbproduct.prod_brand as Brand,
concat(min(format(tbproduct.prod_price,0)), ' USD') as Price,
(GROUP_CONCAT(
           DISTINCT tbstores.store_name 
           ORDER BY tbstores.store_name 
           ASC SEPARATOR ', ')
) as Stores
FROM tbproduct, tbstores
WHERE tbproduct.cat_id = '15'
GROUP BY tbproduct.prod_brand

До сих пор я получаю единственную строку (поле с именем 'Stores') с именами ALLмагазины: so-far

Мне нужно получить единственную строку, но ТОЛЬКО с названиями магазинов, в которых продается бренд: expected

Есть идеи, что может быть не так или как заставить это работать?

1 Ответ

1 голос
/ 07 ноября 2019

Вы забыли условие соединения в вашем запросе. Это самая большая проблема со старым синтаксисом соединения. Я преобразовал ваш запрос в правильный явный синтаксис объединения и использовал псевдоним, чтобы сделать запрос более читабельным -

SELECT tp.prod_brand as Brand,
       concat(min(format(tp.prod_price,0)), ' USD') as Price,
       GROUP_CONCAT(DISTINCT ts.store_name ORDER BY ts.store_name ASC SEPARATOR ', ') as Stores
FROM tbproduct tp
JOIN tbstores ts on tp.store_id = ts.store_id
WHERE tp.cat_id = '15'
GROUP BY tp.prod_brand
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...