2

これが私のデータベース構造です:

観測記録 - データベース構造

私が使用しているSQLステートメントは次のとおりです。

SELECT
     t1.Name AS Teacher_Name,
     t2.Name AS Observer_Name,
     o.Datetime AS Datetime,
     o.Type AS Type,
     o.Year_Group AS Year_Group,
     o.Class_Name AS Class_Name,
     c.Title AS Course_Name,
     GROUP_CONCAT(DISTINCT l.Title SEPARATOR ', ') AS Focus,
     o.Achievement_Grade AS Achievement_Grade,
     o.Behaviour_Grade AS Behaviour_Grade,
     o.Teaching_Grade AS Teaching_Grade,
     GROUP_CONCAT(DISTINCT cl1.Title SEPARATOR ', ') AS Positive,
     GROUP_CONCAT(DISTINCT cl2.title SEPARATOR ', ') AS Development,
     o.Notes AS Notes
FROM observations o
LEFT JOIN teachers t1 
    ON o.Teacher_ID = t1.Teacher_ID
LEFT JOIN teachers t2 
    ON o.Observer_ID = t2.Teacher_ID
LEFT JOIN courses c 
    ON o.Course_ID = c.Course_ID
LEFT JOIN  foci f
    ON o.ID = f.Observation_ID
LEFT JOIN focus_labels l
    on f.focus_id = l.id
LEFT JOIN  criteria c1
    ON o.ID = c1.Observation_ID
LEFT JOIN criteria_labels cl1
    on c1.Criteria_ID = cl1.ID AND c1.Type = 'P'
LEFT JOIN  criteria c2
    ON o.ID = c2.Observation_ID AND c2.Type = 'D'
LEFT JOIN criteria_labels cl2
    on c2.Criteria_ID = cl2.ID
GROUP BY o.id
ORDER BY Datetime DESC

そのような結果セットから返されるデータは次のとおりです。

観測記録 - 観測結果一覧


私が今達成しようとしているのはCourseによる検索です。

これに対する入力は ID のリストなので、次のようなものを使用できることを期待していました。

SELECT * FROM Courses WHERE Course_ID IN (1, 2, 3, 4).

Courses私はJOINにいるので、明らかにそれほど簡単ではありません。

LEFT JOIN courses c ON o.Course_ID = c.Course_ID.

このような検索機能を含めるには、このステートメントをどのように修正すればよいでしょうか?

前もって感謝します、

4

1 に答える 1

1

なぜだめですか?クエリwhereステートメントに追加するだけです:

.............................
LEFT JOIN criteria_labels cl2
    on c2.Criteria_ID = cl2.ID
WHERE o.Course_ID IN (1, 2, 3, 4)
GROUP BY o.id
ORDER BY Datetime DESC
于 2012-09-19T07:19:54.310 に答える