我有以下查询试图证明一种模式:
在关闭指定栏时,不能发出交易/账单:
SQL查询:
select t.transactionID, t.drinker, t.time, b.bar, b.closeTime
from transactions t
inner join bars b
on t.bar=b.bar
where t.time>b.closeTime;
问题在于,一些酒吧桌中有两家餐厅。每个都有不同的closeTime。因此,结果是: transactionID饮用者,时间,酒吧和关闭时间
00001 Kate 22:04. oysterbar 24
00001 Kate. 22:04. oysterbar. 2
问题是我不想拥有两个相同的东西。由于连接的原因,bars表中有两个关闭时间不同的oysterbar。我想打印出第一个事务ID 00001,而不是两个00001,因为第二个oysterbar具有不同的关闭时间。
答案 0 :(得分:0)
我可以看到两个问题。
oysterbar
与
oysterbar.
),但交易数据重复。 FWIW更好的查询如下:问题2可能是:
select t.transactionID, t.drinker, t.time, b.bar, b.closeTime
from transactions t
inner join bars b
on t.bar=b.bar
where t.time BETWEEN b.openTime AND b.closeTime;
答案 1 :(得分:0)
这可能有效;
select t.transactionID, t.drinker, t.time, t.bar, j.closeTime
from transactions t
inner join (
select t1.transactionID, min(b1.closeTime) closeTime
from transactions t1
inner join bars b1
on t1.bar=b1.bar
where t1.time>b1.closeTime
group by t1.transactionId) j
on t.transactionID = j.transactionID;