仕事用の休暇申請ツールを構築しています。
REQUESTS、COVERED、MODID の 3 つのテーブルがあります。
REQUESTS 次のフィールドがあります。
ID INT Auto_Increment not null Primary Key
MODID VARCHAR(7) not null
THE_DATE DATE not null
THE_TIME VARCHAR(30) not null
COVERED CHAR(1) not null Default = 'N'
COVERED 次のフィールドがあります。
ID INT not null Primary Key
CMODID VARCHAR(7) not null
最後に、MODID には次のフィールドがあります。
MODID VARCHAR(7) not null Primary Key
MODNAME VARCHAR(40) not null
休暇要求が REQUESTS に入れられると、MOD の MODID が ID (auto_increment) に設定され、MOD が必要とする TOR THE_DATE とシフトの THE_TIME が入力されます。
上記のデータを入力する PHP バックエンドを構築しました。誰かがシフトを取得すると、同じバックエンドが REQUESTS.ID を COVERED.ID に追加し、シフトをカバーする mod の MODID を追加します。次に、その特定のシフトに対して REQUESTS.COVERED = "Y" を設定します。
以下を使用して、アクティブな休暇リクエストがあるすべての MODS のリストを取得できます。
SELECT M.MODNAME, R.THE_DATE, R.THE_TIME
FROM REQUESTS R
INNER JOIN MODID M ON M.MODID = R.MODID WHERE COVERED = 'N';
私が抱えている問題は、リクエストがカバーされているすべてのモッドのリスト、リクエストの日時、およびシフトEGをカバーしたモッドの名前を取得したいことです
要求された MODNAME 日時 対象 MODNAME
これは私が試したことです:
SELECT M.MODNAME, R.THE_DATE, R.THE_TIME, C.CMODID
FROM REQUESTS R, COVERED C
INNER JOIN MODID M ON M.MODID = R.MODID
INNER JOIN MODID M ON M.MODID = C.CMODID
WHERE COVERED = 'N';
上記のMySQLには多くの問題があることは知っていますが、立ち往生していてどうすればよいかわかりません。
ここに私の MYSQL テーブルのダンプがあります https://dl.dropbox.com/u/12531574/TOR_2013-02-22.sql
編集
私が得ることができる最も近い
使用:
SELECT R.MODID, R.THE_DATE, R.THE_TIME, C.CMODID
FROM REQUESTS R
INNER JOIN COVERED C ON C.ID = R.ID;
出力:
MODID THE_DATE THE_TIME CMODID
AKH3 2013-02-28 10:00AM - 1:00PM PST TST3
私がやりたいことは、AKH3 (MODID) を MODID テーブルの対応する MODNAME に変更し、TST3 (CMODID) を MODID テーブルの対応する MODNAME に変更することだけです。