我想从两个表中获取查询,但结果查询的行数应该多于应有的数量。
我的陈述是:
SELECT * FROM deal D, item I WHERE D.dealstate = 'ACCEPTED' AND
((D.owner = 'UserName1') OR
(D.itemID = I.itemID AND I.owner = 'UserName1')) AND
D.deadline < NOW()
通过此声明,我希望获得用户的有效交易。交易表有owner (the requester), dealID, itemID, creationdate, dealstate, deadline, explanation
,项目表有owner (the owner of item), itemID, itemname, description
。
问题是我想要一个带有一个结果的查询。因为&#39; UserName1&#39;只有1笔交易。但是我得到一个包含10行的查询,每个项目都与交易相匹配。我想用&#34; JOIN&#34;但如果用户不是商品的所有者,则不会使用此ITEM表。然后,我该怎么办?
我希望我足够清楚。
答案 0 :(得分:1)
您的查询未正确连接两个表,因为D.itemID = I.itemID
在您编写的内容中并非总是如此。尝试像
SELECT * FROM deal D, item I WHERE D.dealstate = 'ACCEPTED' AND D.itemID = I.itemID AND ((D.owner = 'UserName1') OR ( I.owner = 'UserName1')) AND D.deadline < NOW();