如何在同一个表中的同一列上组合2个SQL查询?

时间:2011-07-10 23:12:37

标签: php mysql

我需要将2个查询合并为一个。两者都查询相同的表和相同的列名。我需要在一个查询中的结果,以便我可以重复区域结果。我已经尝试过UNION,但这并没有正确运行下半场。查询1如下:

   SELECT o.value AS sdate
    FROM order_option o
        INNER JOIN order_product p ON o.order_product_id = p.order_product_id 
    WHERE 
        p.product_id = '$_GET[u]'
        AND o.name = 'Start Date'

查询2如下......

SELECT o2.value AS sday
    FROM order_option o2
        INNER JOIN order_product p ON o2.order_product_id = p.order_product_id 
    WHERE 
        p.product_id = '$_GET[u]'
        AND o2.name = 'Number of Days'

2 个答案:

答案 0 :(得分:1)

UNION应该是正确的。第二个查询是否如图所示正确运行?如果是这样,它应该在UNION中以相同的方式运行。您可以尝试UNION ALL并查看是否“更正”了查询。

答案 1 :(得分:0)

您可以像这样使用MAX和CASE的组合

SELECT 
    MAX(CASE WHEN o.name = 'Start Date' THEN o.value END) AS sdate,
    MAX(CASE WHEN o.name = 'Number of Days' THEN o.value END) AS sday
FROM order_option o
    INNER JOIN order_product p USING (order_product_id)
WHERE 
    p.product_id = '$_GET[u]'
;