1

私はシフト スケジューリング ソリューションに取り組んでおり、あなたの助けが必要です。データベース レイアウトは次のようになります。

1 か月のすべてのスケジュールを取得するクエリは次のようになります。

SELECT
    ca.date,
    ss.num,
    ma.name
FROM dp_dienstplan  AS dp
JOIN ma_mitarbeiter AS ma ON ma.id=dp.dp_mitarbeiter_id
JOIN ss_schienen    AS ss ON ss.id=dp.dp_schienen_id
JOIN sc_schicht     AS sc ON sc.id=ss.ss_schicht_id
RIGHT JOIN calendar AS ca ON ca.date=dp.dp_datum
WHERE
  month(ca.date)=9 AND year(ca.date)=2013

カレンダー テーブルは、スケジュールが保留されていない結果で偶数日を取得するための翌年の日付を含むヘルパー テーブルです。

クエリの結果は次のようになります。

date       |num        |name
----------------------------
2013-09-01  NULL        NULL
2013-09-02  2           foo
2013-09-02  3           bar
2013-09-03  2           uncle
2013-09-03  1           mac
2013-09-03  7           super
2013-09-04  NULL        NULL
2013-09-04  2           master
.
.
.
2013-09-30  NULL        NULL

私が夢見ている結果は次のようになります。

date       |1num |1name |2num |2name |3num |3name. . .|7name|7num 
-----------------------------------------------------------------
2013-09-01  NULL  NULL   NULL  NULL   NULL  NULL . . . NULL  NULL
2013-09-02  NULL  NULL   2     foo    3     bar  . . . NULL  NULL
2013-09-03  1     mac    2     uncle  NULL  NULL . . . 7     super
2013-09-04  NULL  NULL   2     master NULL  NULL . . . NULL  NULL
.           .     .      .     .      .     .          .     . 
.           .     .      .     .      .     .          .     . 
.           .     .      .     .      .     .          .     . 
2013-09-30  NULL  NULL   NULL  NULL   NULL  NULL . . . NULL  NULL

名前と「num」値の順序で、1 日につき 1 行が必要です。私が話していることを理解していただければ幸いです。英語で申し訳ありません。

1 から 200 までの値を含む別のヘルパー テーブルがあり、これを右結合しようとしましたが、成功しませんでした。

事前に感謝します。これが重複した質問である場合は申し訳ありません。おそらく、何を検索すればよいかわからなかったため、Googleまたはフォーラムで結果が見つかりませんでした。

乾杯、ラルフ。

4

1 に答える 1