1

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

这是我在每个表中的列(简化):

用户:

ID
Name

订单:

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

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

4

4 回答 4

2

在 Orders 上使用 aLEFT JOIN并检查 OrderId 是否为空:

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

SQLFiddle

于 2012-08-28T22:08:25.337 回答
1
SELECT ID, Name
FROM users 
WHERE ID NOT IN (SELECT DISTINCT customerID FROM Orders)
于 2012-08-28T22:04:33.060 回答
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'

如果没有结果,则意味着客户从未订购过任何东西

于 2012-08-28T22:09:35.673 回答
0

尝试

SELECT U.*
FROM   Orders a
           RIGHT JOIN Users b 
               ON b.ID = a.CustomerID
WHERE  a.OrderId IS NULL
于 2012-08-28T22:19:29.417 回答