2013-10-28 5 views
12

JOINを私はこのようなクエリを行う必要があります。のSQLite - LEFTは

SELECT table1.*, table2.column 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

しかし、それは働いていません。同じクエリを試しても、最初の部分を置き換えると - >

SELECT table1.column, table2.column 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

うまくいきます。私はtable1からすべての列を持って来る必要があります。私はどのようにそれらをすべて指定せずに作ることができますか?

+0

エラーは何ですか?どちらの表にも同じ列名がありませんか? – kmas

+1

プロダクションで 'SELECT *'や 'SELECT table。* 'を使うのは悪いことです。すべての列を明示的に指定することを検討します。続きを読むhttp://stackoverflow.com/questions/3639861/why-is-select-considered-harmful – peterm

+0

はい、同じ名前です。そして、エラーはありません、私はすべてのtable1の列を取得しますが、必要なものはありません。これは実際のクエリです SELECTプロパティ。*、ubication.name FROMプロパティLEFT JOIN ubication ON ubication.id = property.ubication –

答えて

14

あなたはtable1table2に同じ列名がある場合は、ここでtable1のすべての列名を指定しないための解決策は次のとおりです。

SELECT table1.*, table2.column as my_column_name_no_in_table1 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

table1table2の列名がすべて異なっている場合は、

SELECT table1.*, table2.* 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

をしかしpetermさんのコメントで言ったように、それが生産に良い習慣ではありません:使用することができます。今、あなたが望むようにしてください! ;)

+0

私は以前と同じコラムを手に入れています! –

+0

エラーを教えてください...そうでなければ、私たちはあなたを助けることができません。 – kmas

+0

さらに詳しいヘルプが必要な場合は、テーブル構造を指定することもできます。 – kmas