2013-04-03 22 views
5

を持っている必要がありますこんにちは、私は2つのクエリMySQLはすべての派生テーブルは、独自のエイリアス

に第一クエリを結合して、SQLクエリを生成する必要があります。出席者数を取得する

SELECT roll_no,full_name, 

SUM(hasAttended= 'P') AS DaysPresent, 

SUM(hasAttended= 'A') AS DaysAbsent, 

COUNT(*) AS totalClasses 

FROM  attendance 

GROUP BY roll_no 

enter image description here

は、今私は、私は次のクエリをしようとしたが、エラーを取得しています2つのテーブルを結合し、その結果テーブル

を生成する必要があります。

1248 - すべての派生テーブルは、独自の別名を持っている必要があります

次のように

私のクエリは次のとおりです。

SELECT * FROM students as st 

INNER JOIN 

(SELECT att.roll_no,att.full_name, 

SUM(att.hasAttended= 'P') AS DaysPresent, 

SUM(att.hasAttended= 'A') AS DaysAbsent, 

COUNT(*) AS totalClasses 

FROM  attendance as att 

GROUP BY att.roll_no) 

ON st.roll_no = att.roll_no 

ORDER BY st.roll_no 

誰でも上記のエラーを解決してください。

+2

内部結合の2番目のテーブルに別のエイリアスを付ける必要があります。 GROUP BY att.roll_no)にはエイリアスが続かなければなりません。 –

答えて

10

MySQLでは、すべての派生テーブルとサブクエリにエイリアスが必要です。あなたはsubqquery締切括弧の最後に別名が欠落しています

SELECT * 
FROM students as st 
INNER JOIN 
(
    SELECT att.roll_no,att.full_name, 
    SUM(att.hasAttended= 'P') AS DaysPresent, 
    SUM(att.hasAttended= 'A') AS DaysAbsent, 
    COUNT(*) AS totalClasses 
    FROM  attendance as att 
    GROUP BY att.roll_no 
) att ---------------------------< this is missing 
    ON st.roll_no = att.roll_no 
WHERE st.class = 1 
ORDER BY st.roll_no 
+1

それは?? ?? !!! OMGはこの質問をするためにとても馬鹿だと感じています。あなたの答えをお寄せいただきありがとうございます:) – NealCaffrey

+0

また、私はテーブルの学生のためのwhere句に参加する必要があります[WHERE class = 1] ..どこに追加する必要がありますか? – NealCaffrey

+0

@NealCaffrey私の編集を参照してください – Taryn

0

一般subqqueryは、上記のようにエイリアス名を必要とします。また、私は解決された問題を抱えていました。私の解決されたクエリを見ることができます。すなわち

関連する問題