0

質問があります:

SELECT g.name, s.hour, gs.weekday
FROM schedule s
INNER JOIN group_schedule gs ON gs.schedule_id = s.id
INNER JOIN groups g ON g.id = gs.group_id
WHERE EXISTS (
  SELECT *
  FROM group_schedule
  WHERE group_id =6
)
ORDER BY g.name, gs.weekday

その戻り値:

name    hour        weekday
A1-A2   10:00:00    1
A1-A2   17:00:00    1
A1-A2   10:30:00    1
A1-A2   17:30:00    1
A1-A2   18:00:00    2
A1-A2   11:30:00    2
A1-A2   18:30:00    2
A1-A2   11:00:00    2
A1-A2   12:30:00    3

ただし、これらの組み合わせを持たない行も取得する必要があります。たとえば、次のようになります。

name   hour      weekday
A1-A2  10:30:00  1
A1-A2  11:00:00  1
A1-A2  11:30:00  1
...

NOT EXISTS を使用すると、空のテーブルが取得されます。

4

1 に答える 1

0

わかりませんが、次のような意味ですか。

SELECT g.name, s.hour, gs.weekday
FROM schedule s
INNER JOIN group_schedule gs 
ON gs.schedule_id = s.id AND group_id = 6 
INNER JOIN groups g ON g.id = gs.group_id
ORDER BY g.name, gs.weekday

group_id 条件を一般的な WHERE 句から group_schedule JOIN に移動しますか? ON キーワードの後に​​任意の論理式を指定できることはご存知のとおりです。

于 2013-03-13T17:35:15.307 に答える