PhpMyAdmin SQL查询返回带有count的内部联接表上的多个记录

时间:2017-11-15 08:31:54

标签: mysql inner-join

我在数据库中有两张表,'发票'和'客户'。我正在尝试创建一个查询,显示已放置的客户列表 两个或更多订单。如果我只看一个客户(在这种情况下是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*'

是空数据集' ..也不正确。

1 个答案:

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