Какой правильный синтаксис в MySQL для построения кратных JOIN - PullRequest
0 голосов
/ 25 января 2011

Я новичок в SQL и пытаюсь создать соединение для 6 таблиц вместе.Вот мой пример кода:

SELECT cr.COMMUNICATIONS_ID, cr.CONSUMER_ID, cr.ACTION_LOG_ID, nc.CONSUMER_ID, cal.CONSUMER_ID, cal.TIPS_AMOUNT, cal.LAST_MOD_TIME, cirm.CONSUMER_RATING, ces.EXPERT_SCORE, cim.CONSUMER_INTEREST_EXPERT_ID, scs.SIMILARITY
FROM COMMUNICATION_RELVANCE AS cr
JOIN network_communications AS nc
ON cr.COMMUNICATIONS_ID=nc.COMMUNICATIONS_ID
JOIN consumer_action_log AS cal
ON cr.ACTION_LOG_ID=cal.ACTION_LOG_ID
JOIN communication_interest_mapping AS cim
ON cr.COMMUNICATIONS_ID=cim.COMMUNICATIONS_ID
JOIN consumer_interest_rating_mapping AS cirm
ON cr.CONSUMER_ID=cirm.CONSUMER_ID
    AND cim.CONSUMER_INTEREST_EXPERT_ID=cirm.CONSUMER_INTEREST_ID
JOIN consumer_expert_score AS ces
ON nc.CONSUMER_ID=ces.CONSUMER_ID
    AND cim.CONSUMER_INTEREST_EXPERT_ID=CONSUMER_EXPERT_ID
JOIN survey_customer_similarity AS scs
ON nc.CONSUMER_ID=scs.CONSUMER_ID
    AND cal.CONSUMER_ID=scs.CONSUMER_ID;

Прежде чем начать отладку, я хочу убедиться, что в моем коде нет никаких оптовых проблем с моим синтаксисом.

Ответы [ 2 ]

5 голосов
/ 25 января 2011

Это выглядит хорошо для меня.Попробуйте запустить его, чтобы увидеть, есть ли какие-либо ошибки.

Пара моментов:

  • У вас нет предложения WHERE, поэтому он вернет все строки.Это преднамеренно?
  • Вы неправильно написали название одной из своих таблиц: COMMUNICATION_RELVANCE.Вы, вероятно, должны это исправить, прежде чем писать слишком много кода.Я знаю, это звучит педантично, но это потому, что исправить это сейчас во время начальной разработки, вероятно, довольно легко.Если вы оставите это слишком долго, люди напишут код, основанный на опечатках, и может оказаться слишком сложно / дорого изменить имя и обновить весь существующий код.Тогда вы застрянете в этом, и это будет раздражать всех, кто должен поддерживать ваш код на долгие годы.
0 голосов
/ 25 января 2011

Все строки выглядят нормально, за исключением того, что вы, вероятно, хотите добавить псевдоним к этой строке, чтобы CONSUMER_EXPERT_ID было «правильным»

AND cim.CONSUMER_INTEREST_EXPERT_ID=CONSUMER_EXPERT_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...