试图写一个查询但不知道该怎么做

时间:2014-04-22 16:41:17

标签: mysql sql oracle

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

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

2 个答案:

答案 0 :(得分:1)

您忘记了GROUP BY条款。

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

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

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

答案 1 :(得分:0)

你不是那么遥远,据我所知,只需要添加一个GROUP BY条款,按ID分组,并按{{{}}计算每本书的数量1}}。像这样:

ID