在mysql的主查询中使用子查询返回2列

时间:2011-10-14 14:02:42

标签: mysql sql pivot

我希望在mysql数据库中填充一个表。首先,我想撤回所有可能性,然后修剪掉不需要的东西(比手工添加它们更容易)。

决赛桌是:

组合

combID
productID
type
content
exclude
extrafield2
extrafield6

数据来自

extrafields_values

exvalueID
productID
extrafieldID
content

对于每个产品,我需要在extra_field_values(extrafieldID = 2和extrafieldID = 6)中为每个组合返回一行

例如:

  • productID = 700
  • extrafield2 = E,D,F
  • extrafield6 = 34,35,36,37

为每个组合

返回exvalueID到extrafields2和6

到目前为止,我已经尝试过:

SELECT EV.productID, extraFieldID, content AS extrafield6, 
    (SELECT  content AS extrafield2 
     FROM wjf_extrafields_values AS EV2
         INNER JOIN wjf_products AS P2
     WHERE extraFieldID = 6) AS extrafield2 
FROM wjf_extrafields_values AS EV 
    INNER JOIN wjf_products AS P ON P.productID = EV.productID 
WHERE extrafieldID = 6

2 个答案:

答案 0 :(得分:1)

我认为您只需要将wjf_products表格与extrafield_values表格相关联,如下所示。

select p.productID, ev1.content as extrafield2, ev2.content as extrafield6
from wjf_products p inner join extrafields_values ev1 on p.productID = ev1.productID
inner join extrafields_values ev2 on p.productID = ev2.productID
where ev1.extraFieldID = 2
and ev2.extraFieldID = 6

答案 1 :(得分:0)

为什么不创建和使用两个视图而不是查询。

View1 =组合

View2 = View1的子集

使用View2

插入数据