0
私は、人とそのプロパティとの関係をリストするテーブルとプロパティのリスト(ファーストネーム、ラストネームなど)のテーブルを2つ持っています。MySQLユニオン/完全外部結合が期待した結果を返さない
人物表の各人物が、プロパティー表にリストされているすべてのプロパティーを持っていない可能性があります。私が望むのは、リンクされているかどうかにかかわらず、各物件ごとに行が返されることです。例えばので
Properties Person
prop_id|prop_name person_id|prop_id|prop_value
----------------- -----------------------------------
1 |firstname 10 | 1 | john
2 |lastname 11 | 1 | sean
11 | 2 | connery
私が望む結果がjohn/10は、姓の列を持っていますが、nullで、この
10 | firstname | john
10 | lastname | null
11 | firstname | sean
11 | lastname | connery
注意です。
私はこのクエリは私に結果を与えるだろうと思ったが、私が望んでいるジョンのヌル行を私に与えない。
select person_id, prop_value, prop_name
from person
left outer join properties on person.prop_id = properties.prop_id
union
select person_id, prop_value, prop_name
from person
right outer join properties on person.prop_id = properties.prop_id
このクエリでは、lastname null行が10個省略されます。このクエリは可能ですか?これはMySQL/MariaDBです。
@での作業が実証されたクエリを@cf_enする 'DISTINCT'を追加する場合、それは動作します:http://sqlfiddle.com/#!9/多分このような何か3dadb90/7 2つの結合を使用しない場合、同じテーブルのperson_id not nullとprop_value nullを持つことはできません –
distinctとsqlfiddleに関する注釈をありがとう。答えにDISTINCTを追加しました。 –
fantastic。クロス・ジョインは私には新しいものでした。ありがとう – Gurnard