2016-08-09 5 views
1

左結合を実行して結果が得られないことがあるため、「最初の」テーブルのIDは何とか0に設定されます。コピーが不変になるようにして、結合に失敗したときでも私はそれにアクセスできます。ここで同じ行を2回選択してコピーを不変にする

は私のクエリです:

SELECT * FROM table1 
LEFT JOIN table2 ON table1.ID = table2.ID 
LEFT JOIN table3 ON table1.ID = table3.ID 

各行は、表1にのみテーブル2または表3のいずれかで同じIDを持っているので、行ごとに、二つのうちの一つが参加し、「失敗」します。結果として得られるものは次のとおりです(モック結果):

+------+------------+------------+------------+------------+------------+------------+ 
| ID | Table1Col1 | Table1Col2 | Table2Col1 | Table2Col2 | Table3Col1 | Table3Col2 | 
+------+------------+------------+------------+------------+------------+------------+ 
| NULL | Something | Something | NULL  | NULL  | Something | Something | 
| NULL | SomeValue | SomeValue | Something | Something | NULL  | NULL  | 
+------+------------+------------+------------+------------+------------+------------+ 

私が達成したいこと:「ID」がNULLでないようにしてください。

(また、選択する "のMyIDとしてtable1.IDを、*" 私にSQLエラーを与える)

(明示的な値を選択すると、設計上の理由から問題外です)

+0

あなたは何を含むことができますか? –

+0

'*'はちょうど間違っているかもしれない1つのIDフィールドを提供するだけなので、 "不変"は正しい単語ではないと思います。エラーメッセージを表示すると便利でした。 – Jakumi

答えて

2

次のクエリ仕事をすべき、ワイルドカードのために明示的に...

SELECT table1.ID, table1.Table1Col1, table1.Table1Col2, 
     table2.Table2Col1, table2.Table2Col2, 
     table3.Table3Col1, Table3.Table3Col2 
FROM table1 
LEFT JOIN table2 ON (table1.ID=table2.ID) 
LEFT JOIN table3 ON (table1.ID=table3.ID) 

更新フィールドに名前を付ける:*のみを選択し、「coluでないときは、テーブルを提供する必要がmn "とする。

SELECT table1.ID as MyID, table1.*, table2.*, table3.* 
FROM table1 
LEFT JOIN table2 ON (table1.ID=table2.ID) 
LEFT JOIN table3 ON (table1.ID=table3.ID) 

このように複数の同じ列が表示されるので、どのようなプロセスでも結果が期待されるはずです。 PHPの場合、私は最後の値が勝つと信じています(columnnameによってアクセスされた場合)。

+0

はい、明示的に名前を付けることができます。私は自分の投稿で言及するのを忘れていましたが、将来のWeb管理者は、クエリコードを変更することなくテーブルやカラムを追加できるはずです。 (それはちょっと変わったかもしれませんが、 '*'を使うと完全にうまくいきます) – user2065501

+0

うまく動かないか、質問しませんか? ^^。名前を変更するときに表示されるエラーメッセージを投稿してください。 – Jakumi

+0

まあ、私は他のすべてを意味しましたが、ええ、あなたは正しいです:P。それが何かを意味するなら、私はエラーを投稿していたでしょう。私は '' FROM ... ''の近くのSQL構文にエラーがあります。または、私はMySQLを正しい方法で使用するにはあまりにも愚かです。知りません。 – user2065501

関連する問題