mysql - 尝试编写查询但不知道该怎么做

标签 mysql sql oracle

我正在尝试创建一个查询,其中对于每个成员(member),列出成员(member) ID 以及该成员(member)曾经借出的书籍数量。我试图这样做(我知道这是错误的):

SELECT DISTINCT ID, COUNT(DateChkOut)
FROM MEMBER, CHECK_OUT
WHERE MEMBER.ID = CHECK_OUT.MemID;

我不知道如何创建查询。如果有人可以给我一些提示/提示,我将不胜感激。谢谢。下面是此查询所需的表。

SQL> select * from MEMBER;

    ID MEMNAME
---------- ---------------
    12 Randy Kaplan
     4 Linda Day
     9 Joo Tan

SQL> SELECT * FROM CHECK_OUT;

DATECHKOU CAT#                 MEMID DATEDUE   DATERET
--------- --------------- ---------- --------- ---------
15-MAR-11 T 430.98 195             4 14-JUN-11 31-MAY-11
15-MAR-11 B 125.2 2013            12 14-JUN-11
27-DEC-12 T 430.98 195             4 25-MAR-13

最佳答案

您忘记了GROUP BY子句。

SELECT ID, COUNT(*)
FROM MEMBER
JOIN CHECK_OUT
ON MEMBER.ID = CHECK_OUT.MemID
GROUP BY ID;

这不会显示从未 checkout 过任何内容的成员(member)。为此,您需要一个外部联接:

SELECT ID, IFNULL(COUNT(DateChkOut), 0) AS Count
FROM MEMBER
LEFT JOIN CHECK_OUT
ON MEMBER.ID = CHECK_OUT.MemID
GROUP BY ID;

关于mysql - 尝试编写查询但不知道该怎么做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23225440/

相关文章:

mysql - 第一个 LEFT JOIN 是否适用于多个 JOIN?

php - CodeIgniter 全局设置数据库

php - 在服务器端(PHP/MySQL)还是在客户端(js)排序?

php - 插入... Twitter API 的位置

python - 编程错误 : LOB variable no longer valid after subsequent fetch

regex - 尝试限制对 Oracle DB 的访问以运行查询 - 设计建议

java - 使用 apache commons 基本数据源安全连接到 oracle 数据库

sql - MySql批量加载命令行工具

php - 将密码的 md5 散列存储在数据库中并进行比较

sql - 如何获取列值以及聚合值 (MAX)