1. ホーム
  2. mysql

[解決済み】MySQL 派生テーブルはすべて独自のエイリアスを持つ必要があります。

2022-02-18 05:23:51

質問

2つのクエリを結合してSQLクエリを生成する必要があります。

1番目のクエリ:全生徒データの取得

SELECT * FROM students where class = 1 and section = 'A'

画像

第2問 : 出席者数の取得

SELECT  roll_no,full_name, 

SUM(hasAttended= 'P') AS DaysPresent, 

SUM(hasAttended= 'A') AS DaysAbsent, 

COUNT(*) AS totalClasses

FROM     attendance

GROUP BY roll_no

画像

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

どなたか上記のエラーを解決してください

解決方法は?

MySQL では、すべての派生テーブルとサブクエリにエイリアスを設定する必要があります。 サブクエリの閉じ括弧の末尾にエイリアスがありません。

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