【问题标题】:How to Show All data From Database and show Count data From another table如何显示数据库中的所有数据并显示另一个表中的计数数据
【发布时间】:2018-05-04 04:17:43
【问题描述】:

我有两张桌子。 table1 包含用户的详细信息。 table2 包含用户创建的所有 URL。

我想显示来自 table1 的一些数据用户,并计算该用户从 table2 创建的所有 url。

例如我有这样的数据:

表1

id     username   email            join_date
123    user123    123@email.com    12-11-2018
456    user456    456@email.com    13-11-2018
789    user789    789@email.com    14-11-2018

表2

id    username   url    date_insert
321   user789    url1   12-12-2018
654   user456    url2   13-12-2018
987   user789    url3   14-12-2018
312   user789    url4   14-12-2018

这是我的代码,但当然是那个错误。

SELECT * COUNT(url.table2) 
FROM table1, table2 
WHERE table1.username = table2.username 
ORDER BY table1.join_date DESC

我想显示这样的数据

最终结果一定是这样的

id(table1)     email(table1)    join_date(table1)  count(url)
----------     --------------   -----------------  -------------
123            789@email.com    14-11-2018         3
456            456@email.com    13-11-2018         1
789            123@email.com    12-11-2018         0

【问题讨论】:

    标签: mysql count


    【解决方案1】:
    SELECT table1.*, count(table2.url) 
    FROM `table1` 
    join table2 
    ON table2.username=table1.username 
    Group By table2.username
    

    我建议你应该使用整数作为外键引用。

    【讨论】:

    • 为什么我必须将 int 设置为外键?
    • 令人惊讶的是,您接受了一个没有提供所需输出的答案。
    • 整数只占 4 个字节,而字符串可以是任意多字节。因此,int 总是会表现得更好。除非您使用少于 4 个字符的用户名。此外,在 int 上建立索引会更快。 :)
    【解决方案2】:

    您可以尝试以下查询:-

    SELECT table1.id,
           table1.username,
           table1.email,
           table1.join_date,
           COUNT(table2.id) AS url
    FROM   table1
           LEFT JOIN table2
                  ON table2.username = table1.username
    GROUP  BY table1.username
    ORDER  BY join_date DESC  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2016-09-08
      相关资源
      最近更新 更多