您好我是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,因为它们在内部查询中使用。那么我有没有办法在产品之间进行比较? 任何帮助将不胜感激。 谢谢
答案 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