SQL查询找到不同产品之间的比较

时间:2015-06-11 18:35:22

标签: mysql sql

您好我是SQL的新手,并且对在多个表中比较不同产品存在疑问。 我有3张桌子

T1: 产品类别 ORDER_ID

T2和T3也有相同的字段。

所有表格都有不同的产品类型。他们可能有也可能没有相同的订单ID。就像你可以在同一订单ID o1上订购T1的产品p1和T2的产品p2,或者它们可以是单独的订单。

我想找到订单的数量,其中T1的产品类型(p1)和T2的产品类型(p2)按相同的顺序排序(具有相同的订单ID)。

我正在尝试运行这样的查询:

select COUNT(DISTINCT order_id) as CountOf from
(
    select product_type from t1
    UNION ALL select product_type from t2
)
AS m
where t1.product_type = p1 and t2.product_type = p2;

我想到的是我无法在外部查询中访问t1和t2,因为它们在内部查询中使用。那么我有没有办法在产品之间进行比较? 任何帮助将不胜感激。 谢谢

2 个答案:

答案 0 :(得分:0)

试试这个:

select
    count(distinct t1.order_id) as OrderCount
from
    t1
    inner join
    t2 on t1.order_id = t2.order_id
where
    t1.product_type = 'p1' and
    t2.product_type = 'p2'

答案 1 :(得分:0)

我无法理解你想要什么。 但内部查询范围仅限于括号。所以你不能在外面访问括号。尝试这个

select COUNT(DISTINCT order_id) as CountOf from
(
    select DISTINCT order_id from t1
    where t1.product_type = p1
    UNION ALL 
    select DISTINCT order_id from t2
    where t2.product_type = p2
) m