0

我有四个要连接在一起的表,但是一个表我想 group_concat 两个特定记录。

Product_to_category PC
P_ID C_ID
1 1
2 2
2 3
1 3


产品P
P_ID P_PRICE
1 12
2 3
3 4

产品_描述 PD
P_ID Language_id PD_Name
1 1 筹码
1 2 芯片(用不同的语言)
2 1 苏打水
2 2 苏打水(另一种语言)

类别 说明 CD
C_ID Language_id CD_Name
1 1 垃圾食品
1 2 垃圾食品(另一种语言)
2 1 饮料
2 2 饮料(用不同的语言)
3 1 进口
3 2 导入(使用不同的语言)


Product_attribute PA
P_ID A_ID Language_ID A_TEXT
1 1 1 品牌 A
1 2 1 300克
1 3 1 番茄酱
1 1 2 品牌 A
1 2 2 300克
1 3 2 番茄酱(不同语言)
2 1 1 品牌 B
2 2 1 500毫升
2 3 1 樱桃
2 1 2 品牌 B
2 2 2 500毫升
2 3 2 樱桃(不同语言)

我想做的是如下:

P.P_ID |  P.P_PRICE | PD.LANGUAGE_ID | PD.PD_NAME | CD.C_ID | CD.CD_NAME | Attribute
------------------------------------------------------------------------------------
  1    |  12        |   1            | Chips      |  1      | Junk Food | Brand A 300g
  1    |  12        |   2            | Chips      |  1      | Junk Food | Brand A 300g
  2    |  3         |   1            | Soda       |  2      | Drinks    | Brand B 500mL
  2    |  3         |   2            | Soda       |  2      | Drinks    | Brand B 500mL
  2    |  3         |   1            | Soda       |  3      | Imported  | Brand B 500mL
  2    |  3         |   2            | Soda       |  3      | Imported  | Brand B 500mL
  1    |  12        |   1            | Chips      |  3      | Imported  | Brand A 300g
  1    |  12        |   2            | Chips      |  3      | Imported  | Brand A 300g

基本上,我正在尝试使用类别和属性加载产品。只需在没有 Product_attribute PA 的情况下加入表格即可正常工作。我无法弄清楚如何将属性放在一起。下面是我的代码:

select P.P_ID, P.P_PRICE, PD.LANGUAGE_ID, PD.PD_Name, CD.C_ID, CD.CD_NAME, 
(select group_concat(PA.A_TEXT) from PA where (PA.A_ID=1 or PA.A_ID=2) and PA.P_ID =
P.P_ID group by PA.P_ID) as attribute from PC left join PD on PC.P_ID = PD.P_ID
left join CD on PC.C_ID = CD.C_ID
left join P on P.P_ID = PC.P_ID
where PD.language_id = CD.language_id and (PD.language_id=1 or PD.language_id=2)

如果这有点令人困惑,我深表歉意

2013 年 4 月 26 日更新
这里总结了表格中的内容以及我想要完成的内容: Product_to_category PC 表将产品链接到他们的类别,并将类别链接到他们的产品。一个产品可以属于多个类别,一个类别可以属于多个产品。P 表中的产品有其产品值,如价格,其描述在 product_description PD 表中。一个产品可以有两行产品描述(双语)。产品在 product_attribute PA 表中也具有属性值,例如品牌(“品牌 A”、“品牌 B”)和体积/重量(“300g”、“500ml”)。一个产品可以属于多个类别,一个类别可以有多个产品。每个类别有两个描述(双语)。

如果需要进一步解释,请告诉我。

4

1 回答 1

2
select P.P_ID, P.P_PRICE, PD.LANGUAGE_ID, PD.PD_Name, CD.C_ID, CD.CD_NAME, 
group_concat(DISTINCT PA.A_TEXT) as attribute
from PC left join PD on PC.P_ID = PD.P_ID
left join CD on PC.C_ID = CD.C_ID
left join P on P.P_ID = PC.P_ID
left join PA on PA.P_ID = P.P_ID AND (PA.A_ID=1 or PA.A_ID=2)
where PD.language_id = CD.language_id and (PD.language_id=1 or PD.language_id=2)
GROUP BY P.P_ID, PD.LANGUAGE_ID

小提琴

于 2013-04-25T18:37:05.403 回答