複数のテーブルを1つのマスター・テーブルに戻す例がたくさんありますが、このクエリはカスケード接続という点で異なります。あなたが見ることができるようにMySQL 3つのカスケード・テーブルを結合する
**CONTACTS**
--------------------------------------------
Cid name
--------------------------------------------
1 John
2 Peter
3 Karl
**OPPORTUNITIES**
--------------------------------------------
Oid Cidlink title
--------------------------------------------
1 2 php lookup script
2 2 php facial recognition
3 3 html email template
4 1 javascript verification
**ATTACHMENTS**
--------------------------------------------
Aid Oidlink attachment
--------------------------------------------
1 3 received enquiry
2 3 header and footer done
3 3 pixel trace image done on server
4 2 database structure done
5 2 html get form done
、添付ファイルを機会に戻ってリンクし、機会が連絡先に関連しています
は、私は、以下の(容易にするために簡略化)に似た3つのテーブルを持っています。添付ファイルは、機会テーブル以外の連絡先には直接リンクしません。
3つのテーブルすべてのフィールドを含むレコードセットを作成する必要があり、苦労しています。
SELECT CONTACTS.*, OPPORTUNITIES.*, ATTACHMENTS.*
FROM ATTACHMENTS
INNER JOIN OPPORTUNITIES
ON CONTACTS.Cid = OPPORTUNITIES.Cidlink
INNER JOIN ATTACHMENTS
ON OPPORTUNITIES.Oid = ATTACHMENTS.Oidlink
ORDER BY ****whatever****
間違った方法で近づいていますか?
添付ファイルが2回表示されているのはなぜですか?最初の連絡先は「連絡先」であってはなりませんか? (レコードが3つのテーブルすべてに必要であると仮定すれば、これは近いです)。そうでなければ、OUTER結合を使用する必要があります。 – xQbert
LEFT結合を使用しない場合、Johnは添付ファイルの機会がないため除外されます。 LEFT Joinを使用すると、添付ファイルのないJohnの機会を含めることができます。 (このような質問で期待される結果を掲示することは、あなたが何をしているのかをよりよく理解するのに役立ちます)将来の投稿について期待される結果を含めることを検討してください。 – xQbert