Я видел множество примеров для объединения нескольких таблиц обратно в одну главную таблицу, но этот запрос отличается тем, что он каскадирует.MySQL Присоединиться к 3 каскадным таблицам
У меня есть 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
Как вы можете видеть, вложения ссылку Вернуться к возможностям и возможностям относятся к контактам. Вложения не привязываются напрямую к контактам, за исключением таблицы возможностей.
Мне нужно создать набор записей, включая поля из всех трех таблиц, и я боюсь.
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****
Я закрываю или приближаюсь к этому неправильно?
Почему у вас есть вложения, перечисленные дважды? не должен ли первый быть «контактами»? (и да, это близко, если запись должна быть во всех трех таблицах, чтобы она вам понадобилась.) В противном случае вам нужно использовать соединения OUTER. – xQbert
Джон был бы исключен, если вы не используете LEFT join, поскольку у него нет возможностей с вложениями. Используя LEFT Join, вы можете включить возможность Джона без вложений. (Обратите внимание, что публикация ожидаемых результатов в таких вопросах помогает нам лучше понять, что вам нужно. Подумайте, включая ожидаемые результаты в будущих сообщениях!) Это помогает рассказать историю о том, чего вы пытаетесь достичь. – xQbert