gpt4 book ai didi

mysql - 在 MySQL 中连接多个表并合并数据

转载 作者:行者123 更新时间:2023-11-29 08:32:28 26 4
gpt4 key购买 nike

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

Product_to_category PCP_ID C_ID1     12     22     31     3Product PP_ID P_PRICE1    122    33    4Product_Description PDP_ID  Language_id   PD_Name1       1           Chips1       2           Chips (In a different language)2       1           Soda2       2           Soda (In a different language)Category Description CDC_ID   Language_id  CD_Name1      1            Junk Food1      2            Junk Food (In a different language)2      1            Drinks2      2            Drinks (In a different language)3      1            Imported3      2            Imported (In a different language)Product_attribute PAP_ID  A_ID  Language_ID  A_TEXT1     1      1            Brand A1     2      1            300g1     3      1            Ketchup1     1      2            Brand A1     2      2            300g 1     3      2            Ketchup (Different language)2     1      1            Brand B2     2      1            500mL2     3      1            Cherry2     1      2            Brand B2     2      2            500mL2     3      2            Cherry (Different language)

What I want to do is below:

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”)和体积/重量(“300 克”、“500 毫升”)。一个产品可以属于多个类别,一个类别可以有多个产品。每个类别有两个描述(双语)。我想要完成的任务是用正确的语言显示每个产品及其多个类别,并连接属性文本。

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

最佳答案

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

FIDDLE

关于mysql - 在 MySQL 中连接多个表并合并数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com