更新 私の元の質問に対するすべての回答をありがとう。しかし、これらのクエリに関連する別の問題があります。テーブルを結合した後、NULLの結果を検索します。以下の例に従って、surname = NULL / surname =''を検索しますが、リンクされていない結果が2つある場合でも、空の結果が返されます。
クエリの例:
SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.surname=NULL
これは0を返します。
何か案は?0を返す理由の背後にあるロジックは理解できますが、これを機能させる方法が必要です(?)
元の質問:質問 に対する回答が見つかりません。おそらく、何を探すべきかわからないためです。
私が抱えている問題は、2つのテーブルを共通のインジケーターで結合したいのですが、共通のインジケーターも存在しないレコードを含めたいということです。
意味がわからないかもしれませんが、以下のコードで説明しようと思います
表1
id | name
1 | John
2 | Michael
3 | Anna
4 | Sue
表2
id | surname
1 | Doe
2 | Anderson
したがって、次のようにテーブルを出力/バインドするクエリが必要です。
table1.id | table1.name | table2.id | table2.surname
1 | John | 1 | Doe
2 | Michael | 2 | Anderson
3 | Anna | NULL | NULL
4 | Sue | NULL | NULL
したがって、データがある場合はマージし、データがない場合はマージしないでください(またはNULL値を追加します)。table2は常にtable1よりもデータが少ないため、table1をボーンとして使用できます。vlookupはExcelでこれを完全に実行し、値が見つからない場合はN / Aを返します。PHPでこれを実現する方法は知っていますが、50kをはるかに超えるレコードを処理するときに、コードを高速化しようとしています。別のテーブル列のすべての行に単一のクエリを実行します。
WHERE table1.id = table2.idを試しましたが、table2.idが存在する場合にのみ結合し、JOIN ON関数も試しましたが、同じように動作します。
助けてください