2011-01-26 39 views
2

我需要連接兩個表以獲取student_info表中的所有記錄,以及student_activities表中與student_id相等的記錄。我需要連接兩個表才能從student_info表中獲取所有記錄

由於單個student_id的學生活動表中可能存在多個記錄,所以當我使用左連接打印輸出時,我得到了重複項。

SELECT * 
FROM student_info 
LEFT JOIN student_activities 
ON student_info.student_id=student_activities.student _id 

有人建議我使用以下內容,但我得到的錯誤表明特定字段不是聚合函數的一部分。

SELECT student_info.student_id, student_info.student_name, student_info.phone, student_info.age, COUNT (student_activities.student_id) AS COA 
FROM student_info 
LEFT OUTER JOIN student_activities 
ON student_info.student_id=student_activities.student_id 
GROUP BY student_info.student_id 

回答

1
SELECT student_info.student_id, student_info.student_name, student_info.phone, student_info.age, ISNULL(t.COA, 0) COA 
    FROM student_info 
    LEFT JOIN (SELECT student_id, COUNT(*) COA FROM student_activities GROUP BY student_id) t 
    ON  student_info.student_id = t.student_id 
0

沒有測試,但應該工作或者是這樣的:

SELECT DISTINCT * 
FROM student_info 
WHERE student_info.student_id = 
(SELECT student_activities.student _id FROM student_activities) 
1
SELECT 
student_info.student_id, 
student_info.student_name, 
student_info.phone, 
student_info.age, 
COUNT (student_activities.student_id) AS COA 
FROM student_info LEFT OUTER JOIN student_activities 
ON student_info.student_id=student_activities.student_id 
GROUP BY student_info.student_id,student_info.student_name, student_info.phone, student_info.age 
相關問題