MySQL оставил присоединиться к / где - PullRequest
0 голосов
/ 12 марта 2011

Я присоединяю свою адресную книгу к моей таблице электронной почты следующим образом:

SELECT * FROM messages m
LEFT JOIN addr_book a ON 
m.to_msg LIKE a.h_email 
OR m.to_msg LIKE a.bill_email 
OR m.to_msg LIKE a.b_email 
OR m.to_msg LIKE a.w_email 
OR m.to_msg LIKE a.other_email 
OR m.from_msg LIKE a.h_email 
OR m.from_msg LIKE a.bill_email 
OR m.from_msg LIKE a.b_email 
OR m.from_msg LIKE a.w_email 
OR m.from_msg LIKE a.other_email 
OR m.cc_msg LIKE a.h_email 
OR m.cc_msg LIKE a.bill_email 
OR m.cc_msg LIKE a.b_email 
OR m.cc_msg LIKE a.w_email 
OR m.cc_msg LIKE a.other_email 
OR m.bcc_msg LIKE a.h_email 
OR m.bcc_msg LIKE a.bill_email 
OR m.bcc_msg LIKE a.b_email 
OR m.bcc_msg LIKE a.w_email 
OR m.bcc_msg LIKE a.other_email

Проблема в том, что он выбирает все, потому что некоторые контакты не имеют электронных писем и присоединяются к электронным письмам, у которых нет cc_msg = '' или bcc_msg = ''

Можно ли как-нибудь присоединиться к таблице в столбце, где столбец похож на '@' ??

Я пробовал пару вещей, таких как IN (m.to_message LIKE a.h_email WHERE a.h_email LIKE '%@%') OR и т. Д.

Но я продолжаю получать ошибки.

Есть идеи?

Спасибо за тонну!

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Хорошо, так что это очень помогает.Я не знаю почему, но я всегда предполагал, что в mySQL учитывается регистр символов.Я использовал следующее, и это прекрасно работает.Спасибо всем, я уверен, что если бы у меня была надлежащая подготовка, я бы не сделал эту ошибку, во-первых, lol.

LEFT JOIN addr_book a ON 

(m.to_msg=a.h_email OR m.to_msg=a.bill_email OR m.to_msg=a.b_email OR m.to_msg=a.w_email OR m.to_msg=a.other_email) OR

(m.from_msg=a.h_email OR m.from_msg=a.bill_email OR m.from_msg=a.b_email OR m.from_msg=a.w_email OR m.from_msg=a.other_email) OR

((m.cc_msg!='') AND (m.cc_msg=a.h_email OR m.cc_msg=a.bill_email OR m.cc_msg=a.b_email OR m.cc_msg=a.w_email OR m.cc_msg=a.other_email)) OR 

((m.bcc_msg!='') AND (m.bcc_msg=a.h_email OR m.bcc_msg=a.bill_email OR m.bcc_msg=a.b_email OR m.bcc_msg=a.w_email OR m.bcc_msg=a.other_email))
0 голосов
/ 12 марта 2011

Если я понимаю ваш вопрос, вам нужно использовать И вместо ГДЕ:

ON (m.to_message LIKE a.h_email AND a.h_email LIKE '%@%') OR (...

Я думаю, вы могли бы иметь в виду = вместо LIKE для первого теста, который дал бы это:

ON (m.to_message = a.h_email AND a.h_email LIKE '%@%') OR (...

Или, может быть, вам просто нужно это:

ON m.to_message = a.h_email

В отличие от LIKE, проверка на равенство не будет выполнена, если a.h_email пусто, но m.to_message не пусто.

...