我在数据库中有两张表,'发票'和'客户'。我正在尝试创建一个查询,显示已放置的客户列表 两个或更多订单。如果我只看一个客户(在这种情况下是id为' C120'的客户),则以下陈述有效。
SELECT `invoices`.date,`customers`.name FROM `invoices`
INNER JOIN `customers`
ON `invoices`.cust_id=`customers`.cust_id
WHERE `invoices`.cust_id = 'C120'
HAVING COUNT(`invoices`.date) >=2;
但我希望所有符合搜索条件的客户都能看到。
我尝试过使用以下形式的LIKE:
WHERE (`customers`.`cust_id` LIKE 'C%')
(所有客户ID都是以' C'开头的四个字符),但所有这一切都是让客户'中的第一个客户返回它甚至不满足> = 2条件。也尝试了
WHERE `invoices`.cust_id = 'C*'
返回一个空集。
我已经没有想法了,非常感谢你们的帮助,谢谢。
客户表格如下:
cust_id name
C100 Bloggs
C110 Pekkonen
C120 Finklefluffle
发票表是:
date cust_id amount
2017-10-09 C100 27.78
2017-11-28 C110 409.66
2017-10-17 C110 2729.3
2017-10-09 C120 2.66
2017-11-06 C110 300
2017-11-21 C120 59.65
我想要的是:
C110 Pekkonen
C120 Finklefluffle
甚至更好
C110 Pekkonen 3
C120 Finklefluffle 2
我得到了什么
WHERE (`customers`.`cust_id` LIKE 'C%')
是完全错误的:
C100 Bloggs
以及我得到的东西
WHERE `invoices`.cust_id = 'C*'
是空数据集' ..也不正确。
答案 0 :(得分:0)
你可以试试这个
SELECT `customers`.cust_id , `customers`.name, count(*) FROM `invoices`
INNER JOIN `customers`
ON `invoices`.cust_id=`customers`.cust_id
GROUP BY `customers`.cust_id , `customers`.name
HAVING COUNT(`invoices`.date) >=2;