Ya da değerleri olmadan sahne listesi için sorgu

1 Cevap php

Ben bu olanlar gibi üç ilişkisel tablolar üzerinde bir SELECT yapmaya çalışıyorum:

table_materials
-> material_id
- material_name

table_props
-> prop_id
- prop_name

table_materials_props
- row_id
-> material_id
-> prop_id
- prop_value

Sayfamda, ben bu gibi bir sonuç elde etmek istiyorum ama ben sorgu ile biraz problem var:

material    prop A    prop B    prop C    prop D    prop E
wood        350       NULL      NULL      84        16
iron        NULL      17        NULL      NULL      201
copper      548       285       99        NULL      NULL

böylece sorgu gibi bir şey dönmesi gerekir:

material   prop_name     prop_value
wood       prop A        350
wood       prop B        NULL
wood       prop C        NULL
wood       prop D        84
wood       prop E        16
// and go on with others rows

i gibi bir şey kullanmak düşündüm:

SELECT *
FROM table_materials AS m
INNER JOIN table_materials_props AS mp
ON m.material_id = mp.material_id
INNER JOIN table_materials_props AS p
ON mp.prop_id = p.prop_id
ORDER BY p.prop_name

sorun (sorgusu NULL değerlerini geri dönmez, ve ben tüm materials olursa olsun pervane değerlerin {vardır [için aynı prop sırasını ihtiyaç vardır 3)]}

Ben bu örnek açıktır umuyoruz!

1 Cevap

Çapraz-join (veya iç oa durumda w / join) tüm seçenekleri, daha sonra ilişkisel varlık masaya gelmeyi bıraktı. Kombinasyonlar çağrışımlı tabloda mevcut olmasa bile sol katılmak pervane / malzemelerini koruyacak.

Denenmemiş:

SELECT * 
FROM table_materials AS m
INNER JOIN table_props as p 
LEFT JOIN table_material_props AS mp 
ON p.prop_id = mp.prop_id 
AND 
m.material_id = mp.material_id;
ORDER BY p.prop_name