我想将两个SQL查询合并为一个

时间:2012-08-20 18:26:38

标签: sql oracle

我有两个SQL查询,如果可能的话,我想将它们组合成一个。第一个是获取有关车间订单的信息,第二个是从具有相同shop_order_id的所有先前记录中获取修订信息。

第一个查询:

SELECT so.shop_order_id, so.shop_order_suffix, so.status, so.mfg_method, so.description
  FROM shop_order so
  WHERE so.shop_order_id = 'ZZ1810C'
    AND so.shop_order_suffix = '000';`

第二个问题:

SELECT so.user_att27, so.user_att28 
  FROM shop_order so
  WHERE so.shop_order_id LIKE 'ZZ1810C%'
  ORDER BY shop_order_suffix DESC;`

是否有可能将它们组合起来以便它们一次运行?如果是这样,我将如何进行它?

3 个答案:

答案 0 :(得分:1)

我认为你需要加入:

    SELECT so.shop_order_id, so.shop_order_suffix, so.status, so.mfg_method, so.description,  so2.user_att27, so2.user_att28
    FROM shop_order so 
    JOIN shop_order so2 ON so2.shop_order_id LIKE 'ZZ1810C%'
    WHERE so.shop_order_id = 'ZZ1810C' AND so.shop_order_suffix = '000'
    ORDER BY shop_order_suffix DESC;

答案 1 :(得分:0)

您希望结果如何?一个例子会有所帮助。

以下结合了两个条件:

SELECT so.shop_order_id, so.shop_order_suffix, so.status, so.mfg_method,
      so.description, so.user_att27, so.user_att28
FROM shop_order so
WHERE so.shop_order_id LIKE 'ZZ1810C%'
ORDER BY shop_order_suffix DESC;

这将列出车间订单的所有行,每行的初始信息重复。其他字段会告诉您有关修订的信息。

答案 2 :(得分:0)

您提到第二个查询的目的是使用SAME shop_order_id获取所有以前的记录,但第二个查询按照LIKE子句的指定过滤shop_order_ids,它们以提供的文本开头。

如果意图包含所有这些,则两个查询来自同一个表,因此只需获取所有此类条目的所有列的并集。我按shop_order_id订购,以便首先显示没有任何附加后缀文本的文本:

SELECT so.shop_order_id,so.shop_order_suffix,so.status,so.mfg_method,so.description,so.user_att27,so.user_attr28 FROM shop_order so so sohere.shop_order_id LIKE'ZZ1810C%'AND so.shop_order_suffix ='000 'ORDER BY so.shop_order_id DESC;