我正在使用包含联系人,消息,收件人和对话的数据库。
我使用user_ID作为条件,在Contacts和Recipients之间执行了完全外部联接。这将给出一个包含这些值的表格; USER_ID,FNAME,LNAME,CELL,CITY,COUNTRY,MSGID,USER_ID,TIME_READ。 user_ID有重复的值,因为两个表都有此值。我的子查询在自己完成时给出了正确的结果:
SELECT *
FROM Contacts
FULL JOIN Recipients
ON Contacts.user_ID=Recipients.user_ID;
执行此操作后,我想预先形成一个Group By,它为每个user_ID计算每个msgID,给出user_ID的最终结果和每个用户获得的消息数。
我似乎无法使语法正确,因为我一直收到错误。
SQL> SELECT user_ID, count(msgID)
FROM ( SELECT *
FROM Contacts
FULL JOIN Recipients
ON Contacts.user_ID=Recipients.user_ID)
Group by Contacts.user_ID;
Group by Contacts.user_ID
*
ERROR at line 6:
ORA-00904: "CONTACTS"."USER_ID": invalid identifier
我尝试过“Contacts.user_ID”,只是简单的“user_ID”,但它不喜欢这两种变体。
谢谢。
答案 0 :(得分:2)
我猜你想要这个:
SELECT COALESCE(c.user_ID, r.user_ID), COUNT(*)
FROM Contacts c FULL JOIN
Recipients r
ON c.user_ID = r.user_ID
GROUP BY COALESCE(c.user_ID, r.user_ID);
子查询不是必需的。