2017-06-21 1 views
0

私はこれらの2つのMySQLテーブルを持っています。私はsenderNoが関連付けられているTelNumber見つけるために二つの文に参加しようとしています:私はこのクエリを試してみましたこれらのMySQLテーブルの出席者とメッセージに参加することは可能ですか?

enter image description here

enter image description here

それだけ持つメッセージを返します。関連する出席者ではなく、のtelNumberがデータベースに登録されています。

SELECT Attendee.`ownerName`, Attendee.`businessName`,Messages.`messageID`, Messages.`senderNo`, Messages.`messageContent`,Messages.`timestamp`,Messages.`type`,Messages.`viewed` 
FROM Messages 
INNER JOIN Attendee ON Messages.`senderNo`= Attendee.`telNumber` OR Attendee.emailAddress 

またはsenderNoも含まれているとタイプが事前に

おかげメールなりした電子メールアドレスことができますので、一部ではある等しいです。

+0

INNER JOINは 'OR Attendee.emailAddress'で終わります。 emailAddressと比較されるべきものは何ですか? –

+0

あなたの "OR"が(senderNo = telNumber)OR(emailAddress) ' –

+0

と同じsenderNoと比較しているようです。おそらく最も良いことはありません – Brad

答えて

0

ORを使用して1列と2列を比較することはできません。両方の比較を別々に行い、ORと結合する必要があります。

ON Messages.senderNo IN (Attendee.telNumber, Attendee.emailAddress) 

一致する出席者を持たないメッセージを取得するには、代わりにINNER JOINLEFT JOINを使用して:あなたはまた、複数のものに値を比較することINを使用することができます

ON Messages.senderNo = Attendee.telNumber OR Messages.senderNo = Attendee.emailAddress 

+0

メッセージがあっても、受け取った参加者のテーブルの出席者と一致しませんか? 私が得ている問題は、送信者が出席者テーブルに存在しないため、未知の送信者からのメッセージが表示されない場合です。 どうすればすべての回答が得られますか? – Brad

+0

一致しないメッセージを含める場合は、「LEFT JOIN」を使用します。 – Barmar

+0

Thats works!所有者名とビジネス名をNULLの代わりにunknownと言うように変更する方法はありますか? – Brad

1
  1. クエリの構造が正しくありません。 ORた後、それが関連するtelNumberを持っていないメッセージを取得するには

    Messages.senderNo = Attendee.emailAddress

  2. する必要があり、あなたはLEFT OUTER JOINを代わりにINNERが

  3. をJOINを使用する必要があります
関連する問題