SQL ステートメントを使用してテーブル内の 2 つの行を結合する MySQL ステートメントについて問い合わせがあります。最初に、従業員のシフトをデータ グリッド ビューに表示するコードを実装しました。
LocationName | StationName | 12:00 - 13:00 | 13:00 - 14:00 | 14:00 - 15:00
T2 | Counter | Michael Joyce | Michael Joyce | Michael Joyce
ご覧のとおり、同じ Location と Station の下に 2 人の従業員がいます。次のステップでは、SQL ステートメントを使用して形式を入力し、最終的に SQL ステートメントを使用してレポート ビューアーを作成します。
これは、上記と同じ形式で表示しようとした SQL ステートメントです。
select
z.LocationName,
z.StationName,
a.12001300,
b.13001400,
c.14001500
from (SELECT DISTINCT
LocationName,
StationName
FROM satsschema.employeeslot
where AllocationDate = '10-Aug'
and LocationName = 'T2 PML'
and StationName is not null) z
left outer join (SELECT
LocationName,
StationName,
EmpName AS '12001300'
FROM satsschema.employeeslot
WHERE Assigned = true
and AllocationDate = '10-Aug'
and (EmpTime = '12:00:00' && EmpTime < '13:00:00')) a
on z.LocationName = a.LocationName
and z.StationName = a.StationName
left outer join (SELECT
LocationName,
StationName,
EmpName AS '13001400'
FROM satsschema.employeeslot
WHERE Assigned = true
and AllocationDate = '10-Aug'
and (EmpTime = '13:00:00' && EmpTime < '14:00:00')) b
on a.LocationName = b.LocationName
and a.StationName = b.StationName
left outer join (SELECT
LocationName,
StationName,
EmpName AS '14001500'
FROM satsschema.employeeslot
WHERE Assigned = true
and AllocationDate = '10-Aug'
and (EmpTime = '14:00:00' && EmpTime < '15:00:00')) c
on b.LocationName = c.LocationName
and b.StationName = c.StationName
上記の SQL ステートメントは、私が望んでいたものと一致しない次の結果を示しました。次のように表示されます。
LocationName | StationName | 12:00 - 13:00 | 13:00 - 14:00 | 14:00 - 15:00
T2 | Counter | Michael | Michael | Michael
ご覧のとおり、Location と Station には 1 人の従業員のみが表示されます。ロケーションとステーション内に複数の従業員がいる場合、他の従業員も見ることができるというSQLステートメントをどのように実行できますか。ご意見はありますか?