Hey all。私は私のqryに論理エラーがあると思う。出力は正確ですが、トリプレット単位です。私はこれをずっと見つめておらず、それを見ていませんでした。誰かがこれにいくつかの光を当てることができますか?ありがとう!!PHP MYSQL Join Query。場所とロジックの選択
また、この情報も追加したいと考えています。
- $ユーザーID = 1
- $ UserIDAList =(1,1,6)
- $ UserIDBList =(2,3,1)
PHP-コード:
$result = mysql_query("SELECT TBL_ContactsList.ContactID, TBL_ContactName.FirstName FROM TBL_ContactsList, TBL_ContactName WHERE ((TBL_ContactName.NameID != $userid) AND (TBL_ContactsList.ContactID != $userid)) AND ((TBL_ContactName.NameID IN ($UserIDAList) OR TBL_ContactName.NameID IN $UserIDBList)))");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]);
echo "<br/>";
}
SQLクエリ(可読性)のみ:
SELECT TBL_ContactsList.ContactID, TBL_ContactName.FirstName
FROM TBL_ContactsList, TBL_ContactName
WHERE ((TBL_ContactName.NameID != $userid) AND (TBL_ContactsList.ContactID != $userid))
AND ((TBL_ContactName.NameID IN ($UserIDAList) OR TBL_ContactName.NameID IN $UserIDBList)))
出力:
ID: 2 Name: Joe
ID: 3 Name: Joe
ID: 4 Name: Joe
ID: 2 Name: Jimbo
ID: 3 Name: Jimbo
ID: 4 Name: Jimbo
ID: 2 Name: Mike
ID: 3 Name: Mike
編集:ここに私が使用して終了するものです。 (ここでインデントを調べることはできません)
しかし、今はdbからのエントリがありません。
$result = mysql_query("
出力は次のようになります。
SELECT cl.ContactID, cn.FirstName
FROM TBL_ContactName AS cn
INNER JOIN TBL_ContactsList AS cl
ON cl.ContactID = cn.NameID
WHERE
cn.NameID != $userid
AND (
cn.NameID IN ($UserIDBList) OR cn.NameID IN ($UserIDAList)
)
");
ID:2名:ジョー・
ID:3名:神保
しかし、私は左を入れて、私はこれを取得、JOIN。閉じるがまだIDがない。
ID:2名:ジョー・
ID:3名:神保
ID:名:マイク・
任意のアイデア?ありがとう!
'TBL_ContactsList、TBL_ContactName'あなたをFROMあなたのテーブル構造体に応じてLEFTまたはRIGHT結合を試みるべきです – JohnP
ねえ、johnp、そうです。すべてのコメントから、私が欠けていたのはJOIN ONでした。ありがとう! – Newphper
ありがとうございました!私は@Ardaと@ DNLの回答に行きました。しかし、今私は質問に項目がありません。いくつかの実験の後、LEFT JOINを使用すると、IDを紛失していることを除いてほとんどそれが得られました。これまでのコードとその出力に関する質問を編集しました。 – Newphper