2016-05-26 4 views
0

結果の予測数を返しません私のクエリは、私が私のSQLクエリは私にすべての私の行(ただ最初の1)を返さない理由を知りたい

あなたの助けのための
|--------|--------|--------| 
|PRO_Id |REG_Id |PRO_Name| 
|1  |1  |Projet 1| 
|2  |0  |Projet 2| 
|3  |0  |Projet 3| 
|--------|--------|--------| 

表___Regions

|--------|--------| 
|REG_Id |REG_Name| 
|1  |Region 1| 
|2  |Region 2| 
|3  |Region 3| 
|--------|--------| 

感謝。

+0

によって与えられたクエリ...と' REG_Id'が1であり、その条件に該当する唯一のものは、ありますProjet 1 –

+0

私は、 'REG_Id'の' ___Projects'テーブルでは、 '___ Regions'とのリンクが' 0'であるためと思います。おそらく? – PacPac

+0

まったく。他の 'REG_Id'を2と3に変更してみてください。あるいは、代わりに' ON ___ Projects.PRO_Id = ___ Regions.REG_Id'にマッチさせることを目指していますか? –

答えて

1

利用LEFT JOIN;)

SELECT * 
FROM ___Projects 
LEFT JOIN ___Regions 
ON ___Projects.REG_Id=___Regions.REG_Id 
ORDER BY PRO_Id ASC 
+0

パーフェクト。なぜLEFT JOINがこの場合に働くのですか? – PacPac

+0

'INNER JOIN'は2つのテーブルの両方の条件でレコードを照合し、LEFT JOINは左側のテーブルのすべてのレコードをフェッチし、右側のテーブルの条件でレコードをフェッチします。 – Blank

+0

[INNERとOUTERの違い](http://stackoverflow.com/questions/38549/difference-between-inner-and-outer-joins)をご覧ください。 – Blank

0

INNER JOINを使うと、結果は、両方のテーブルに共通するようにしたいときに使用されます。

したがって、INNER JOINを実行すると、両方のテーブルに一致する行が出力されます。

LEFT JOINを使用すると、クエリのキーワードJOINの左側にあるテーブルからすべての行が取得され、右側のテーブルから一致するレコードのみが取得されます。

使用のせいか、あなたの `ON ___ Projects.REG_Id = ___ Regions.REG_Id`のない全くわから@reno

関連する問題