Составная таблица SQL Server SELECT - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть запрос ниже:

SELECT  p.id as prod_id, * FROM products AS p 
        LEFT JOIN Product_UPC AS UPC ON UPC.ProductID = p.id
        LEFT JOIN Brands AS b ON p.brand = b.id
        LEFT JOIN productCategoryLink AS c ON c.ProductID = p.id 
        WHERE (p.id = '$this->prod_id')

Продукт может быть присвоен нескольким категориям, и поэтому у меня есть составная таблица, состоящая из идентификаторов продуктов и категорий. Я хочу изменить приведенный выше запрос таким образом, чтобы он выводил только одну строку данных, поскольку в данный момент он выводит несколько элементов в зависимости от того, сколько категорий в составной таблице. Я хотел бы как-нибудь вывести строки идентификаторов категорий и добавить их в одну строку.

например.

id | name | desc | category1| category2| category3 | price

Возможно ли это? Если так, то как?

1 Ответ

1 голос
/ 18 ноября 2011

Вы можете попробовать это, чтобы получить категории в одном столбце (вы можете разделить их позже):

SELECT  p.id as prod_id, * FROM products AS p
        GROUP_CONCAT(c.category), 
        LEFT JOIN Product_UPC AS UPC ON UPC.ProductID = p.id
        LEFT JOIN Brands AS b ON p.brand = b.id
        LEFT JOIN productCategoryLink AS c ON c.ProductID = p.id 
        WHERE (p.id = '$this->prod_id')

Если вы хотите получить все товары, измените последнюю строку с этим

    GROUP BY p.id
...