查询:
SELECT i1.*
FROM (SELECT store_id,
transaction_fid
FROM transactions i
inner join (SELECT prod_id
FROM products
WHERE category = '802') p
ON i.prod_id = p.prod_id
WHERE i.date_id = '10-SEP-16') i1
inner join transactions i2
ON i1.store_id = i2.store_id
AND i1.transaction_fid = i2.transaction_fid
在上述查询中,我试图获取包含属于category
' 802'
内部查询与transactions
中的每一行匹配,其中prod_id
是prod_id
802中项目的category
。
外部查询然后获取store_id
和transaction_fid
并将它们连接回事务表以获取匹配事务中的所有其他项。
我的问题是 - 我是否需要将外部查询过滤到与内部查询相同的日期范围,或者在效率/查询运行时间方面无关紧要?
有没有更好的方法来实现我想要做的事情?
答案 0 :(得分:2)
根据您的表名和连接类型,查询应该类似于:
select i1.store_id,i1.transaction_fid
from transactions i1
inner join products p
on i1.prod_id = p.prod_id
where p.category = '802'
and i1.date_id = '10-SEP-16'
答案 1 :(得分:0)
这很简单吗?
SELECT tr.*
FROM transactions AS tr
INNER JOIN products AS p ON p.prod_id=tr.prod_id
WHERE i.date_id = {d'2016-09-10'}
AND pr.category='802' --really string value? If int-value better as naked number
顺便说一句:你真的应该避免日期/时间值作为依赖于字符串文字的文化!