MySQL查询和2个单独的表

时间:2012-08-28 22:01:30

标签: mysql

所以我在MySQL数据库中有2个表,一个用于“用户”,另一个用于“订单”,其中订单中的每个条目都是用户下的订单(有些用户可以有多个订单,有些可能没有有什么)。我正在处理报告查询,我想要的其中一个报告是一个从未下过任何订单的用户列表。在MySQL查询方面,我仍然是一个初学者,所以我不知道如何做到这一点。如果这有任何不同,将通过PHP放置查询。

以下是每个表格中的列(简化):

用户:

ID
Name

订单:

OrderID
OrderName
CustomerID      (corresponds to User.ID that placed the order)

这里的任何帮助都会很棒。谢谢!

4 个答案:

答案 0 :(得分:2)

在订单上使用LEFT JOIN并检查OrderId是否为空:

SELECT U.*
FROM
 Users U
 LEFT JOIN Orders O ON(U.ID = O.CustomerID)
WHERE
 O.OrderId IS NULL

SQLFiddle

答案 1 :(得分:1)

SELECT ID, Name
FROM users 
WHERE ID NOT IN (SELECT DISTINCT customerID FROM Orders)

答案 2 :(得分:0)

所以基本上你一直在寻找那些不是由那个用户做出的订单

Select * from Orders where CustomerID = 5 //5 is the id of the custumer

如果您按名称进行搜索

Select * from Orders LEFT JOIN Users on Users.ID Where Users.name ='Mark'

如果没有结果,则表示客户从未订购任何商品

答案 3 :(得分:0)

尝试

SELECT U.*
FROM   Orders a
           RIGHT JOIN Users b 
               ON b.ID = a.CustomerID
WHERE  a.OrderId IS NULL