2016-12-15 34 views
-1

我需要制定一個查詢並卡住。需要關於WHERE x = x的幫助,但是如果不輸入null或繼續。查詢WHERE響應是空的輸入空

例子。

SELECT 
    a.value1, a.value2, 
    b.vlaue1, b.value2, 
    c.value1 
FROM 
    columnX a, 
    columnY b, 
    columnZ c 
WHERE 
    a.value1 = b.value3 
    and b.value2 = c.value4 
    and c.value1 = a.value5 
     or c.value1 is null 

我需要c.value1的最後一個where或者=來檢查它,或者如果沒有值輸入空值。現在它似乎窒息和循環。

+4

推廣使用顯式的'JOIN' sintaxis,阿龍貝特朗寫了一篇很好的文章[不良習慣踢:使用舊樣式的JOIN(HTTP: //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx)。 –

+1

你真的有名爲columnX等的表和名爲value1等的列嗎?絕對可怕! – jarlh

回答

3

使用連接語法,左連接爲C:

SELECT 
    a.value1, a.value2, 
    b.vlaue1, b.value2, 
    c.value1 
FROM columnX a 
INNER JOIN columnY b 
    on a.value1 = b.value3 
LEFT JOIN columnZ c 
    on b.value2 = c.value4 
    and c.value1 = a.value5 
+0

謝謝LEFT JOIN似乎是答案。然而,在我看到迴應和進一步研究之後,我嘗試了一個JOIN,我明白了爲什麼。 – cw2