Önlenmesi tüm bir alan bir WHERE yan tümcesi içinde eksik olduğunda başarısız MYSQL sorgu JOINed

2 Cevap php

Ben WHERE yan tümcesinde bir değişken ile birleştiği bir çift yapıyorum. Ben verimli olarak her şeyi yapıyorum emin değilim ben olabilir, hatta en iyi uygulamaları kullanarak ama benim sorun yarım benim tablolar zaman tableC.type=500 için veri var, ve diğer yarısı çıkan kalmamasıdır gibi Tüm sorgu başarısız olarak.

SELECT tableA.value1 , tableB.value2, tableC.value3 FROM tableA  
JOIN tableB ON  tableB.id=tableA.id
JOIN tableC ON  tableC.id=tableB.id
WHERE tableA.category=$var && tableC.type=500;

What I would like to happen is to still get tableA.value1 and tableB.value2 even if there is no field in tableC with a type=500.
any thoughts? i'm totally stumped as how to approach this...

2 Cevap

SELECT tableA.value1 , tableB.value2, tableC.value3 FROM tableA  
JOIN tableB ON  tableB.id=tableA.id
LEFT JOIN tableC ON  tableC.id=tableB.id AND tableC.type=500
WHERE tableA.category=$var;

Değerler var sadece [İÇ] (var olan) JOIN katıldı;

TableC eşleşen hiçbir satır bulunursa SOL TableC sütunlar için null döner JOIN.

Ben bir SOL JOIN kullanırken WHERE NULL değerleri filtrelemek gibi tableC.type IS NULL beri (ON maddesinin içine TableC durum (lar) taşımak için gerekli olduğunu düşünüyorum! = 500).

Bir LEFT JOIN Dene