具有错误行的多表查询

时间:2014-06-02 14:10:56

标签: mysql multiple-tables

我想从两个表中获取查询,但结果查询的行数应该多于应有的数量。

我的陈述是:

 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表。然后,我该怎么办?

我希望我足够清楚。

1 个答案:

答案 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();