Mysql групповой запрос - PullRequest
       7

Mysql групповой запрос

0 голосов
/ 24 декабря 2010

У меня есть две таблицы, содержащие информацию о продукте и варианты продукта. Я пытаюсь перечислить все продукты, и их цветовые вариации.

Таблица продуктов содержит общую информацию о продукте (название, описание, включено и т. Д.)

Таблица product_attributes содержит различные варианты товара (цвет, размер, цена и т. Д.)

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

SELECT pa.price, pa.color, p.id, p.url_key, p.name FROM product_attributes AS pa INNER JOIN products AS p ON pa.product_id = p.id && p.active = 1

У кого-нибудь есть идеи, как этого добиться, самый лучший и умный способ?

Надеюсь, вы понимаете мой вопрос

Заранее спасибо,

Привет!

id  mediumint(7)    NO  PRI NULL    auto_increment
type    tinyint(3)  NO      1    
url_key varchar(54) NO      NULL     
name    varchar(48) NO      NULL     
description text    NO      NULL     
weight  float   NO      0    
active  tinyint(3)  NO      0    
in_feed tinyint(3)  NO      0    
tax_class   tinyint(3)  NO      0    
meta_title  varchar(48) NO      NULL     
meta_keywords   varchar(48) NO      NULL     
meta_description    text    NO      NULL     
manage_stock    tinyint(3)  NO      0    
attribute_designers_id  mediumint(7)    NO      0    
attribute_size_family_id    mediumint(7)    NO      0

id  mediumint(7)    NO  PRI NULL    auto_increment
product_id  mediumint(7)    NO  MUL NULL     
sku varchar(48) NO      NULL     
price   float   NO      NULL     
special_price   float   NO      0    
special_price_from_date datetime    NO      NULL     
special_price_to_date   datetime    NO      NULL     
cost    float   NO      0    
new_from_date   datetime    NO      NULL     
new_to_date datetime    NO      NULL     
attribute_colors_id mediumint(7)    NO      NULL     
color   varchar(24) NO      NULL     
attribute_sizes_id  mediumint(7)    NO      NULL     
quantity    mediumint(7)    NO      0

1 Ответ

1 голос
/ 24 декабря 2010

Вам необходимо добавить группу по:

SELECT pa.price, pa.color, p.id, p.url_key, p.name
FROM product_attributes AS pa
INNER JOIN products AS p
ON pa.product_id = p.id && p.active = 1
GROUP BY p.id, pa.color

Обратите внимание, что ваш столбец pa.price, вероятно, здесь не имеет смысла, поскольку цена почти наверняка зависит от размера, но вы не знаете, для какого размера цена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...