2015-10-05 86 views
0

有一個表table1具有列hId。這也可以包含數字,也包括0null。一些加盟關係之後,每個table1.hIdfull name,但只有當hId !=0 or null表格之間的外連接

然後table2.Hpid = table1.hId -- but only if hId is not null or != 0

在此之後,table2.exId = table3.Id,最後,table3.lId = table4.Id

我已經試過

SELECT 
    (SELECT table4.fullName 
    FROM table4 
    WHERE table4.Id = table3.lId) 
FROM table1 
JOIN table2 ON table1.hId = table2.hpId 
JOIN table3 ON table3.Id = table2.exId 

但通過這種方式,我只獲得了行數table1.id = table2.hId。我相信我必須使用case聲明(並且當table.hId = 0 or null =>然後打印'錯誤'),但我怎麼能實現這一點?

+0

準備http://sqlfiddle.com它會更容易幫助。 – lad2025

+1

查詢中有錯誤:'JOIN table3 ON ed.Id = table2.exId'中的'ed.Id'是什麼? – Paolo

回答

1

我無法理解的目標,而是嘗試去左聯接:

SELECT ISNULL(table4.Id, 'ERROR') AS Table4Id 
     , table4.fullName 
FROM table1 
LEFT JOIN table2 ON table1.holidayparkid2 = table2.Id 
LEFT JOIN table3 ON ed.Id = table2.exId <-- what's ed.Id? 
LEFT JOIN table3 ON table4.Id = table3.lId; 
0
SELECT CASE WHEN (table.hId = 0 OR table.hId IS NULL) THEN 'ERROR' 
      ELESE table4.fullName 
     END AS fullName 
FROM table1 
JOIN table2 ON table1.holidayparkid2 = table2.Id 
JOIN table3 ON ed.Id = table2.exId 
JOIN table4 ON table4.Id = table3.lId 
--WHERE table1.hId!=0 AND table1.hId IS NOT NULL --not need with case