2012-05-04 39 views
3

表を返しSQLクエリは、サブクエリは複数行に

SELECT laterecords.studentid, 
laterecords.latetime, 
laterecords.reason, 
(SELECT Count(laterecords.studentid) FROM laterecords 
     GROUP BY laterecords.studentid) AS late_count 
FROM laterecords 

私はエラー "MySQLのサブクエリは複数の行を返します" そうです。

私はこのクエリは次のクエリを使用するための回避策を知っている:

SELECT Count(laterecords.studentid) AS late_count FROM laterecords 
:次に late_countを取得し、それをエコー結果かかわらず、クエリの下に行うにはPHPのループを使用して

SELECT laterecords.studentid, 
laterecords.latetime, 
laterecords.reason 
FROM laterecords 

しかし、もっと良い解決策があると思いますか?

答えて

3

簡単な修正は、あなたのサブクエリでWHERE句を追加することです:使用する

SELECT 
    studentid, 
    latetime, 
    reason, 
    (SELECT COUNT(*) 
    FROM laterecords AS B 
    WHERE A.studentid = B.student.id) AS late_count 
FROM laterecords AS A 

(パフォーマンスの面で)より良いオプションがあるの参加:

SELECT 
    A.studentid, 
    A.latetime, 
    A.reason, 
    B.total 
FROM laterecords AS A 
JOIN 
(
    SELECT studentid, COUNT(*) AS total 
    FROM laterecords 
    GROUP BY studentid 
) AS B 
ON A.studentid = B.studentid 
関連する問題