我有三個關係爲GradParent(Country)> Parent(State)> Child(People)的表。我試圖通過國家名稱實現查詢以獲取以下情景和訂單的獨特信息。
1.所有人的數據與他們的國家和國家。
2.如果州沒有人員,則州和國家數據。
3.如果沒有國家和/或人民,那麼只是國家數據。與多個外連接的SQL查詢
SQL:
SELECT DISTINCT P1.ID as COUNTRY_ID, P1.NAME AS COUNTRY_NAME, P2.ID AS STATE_ID,
P2.Name AS STATE_NAME , I1.ID AS PEOPLE_ID, I1.NAME AS PEOPLE_NAME
FROM dbo.Country P1
INNER JOIN dbo.State P2
ON P2.Country_ID = P1.ID
INNER JOIN dbo.People I1
ON I1.Country_ID = P1.ID
<!-- WHERE P1.Name like 'USA%'--- optional-->
ORDER BY P1.NAME
試圖改變你的'INNER JOIN's爲'LEFT JOIN's – Shnugo
像其他評論說/已經回答,你需要什麼(生產與無狀態的國家行,並沒有爲國家/國家我們會編輯它以反映出來,然後,你的數據模型沒有被標準化(這不好),PEOPLE表只能有state_id;每個國家的國家已經顯示在STATE表中,在PEOPLE中重複這些關係至多是多餘的,最壞的情況是相互矛盾的,我認爲這是某種功課;我不喜歡你的老師,他們用這樣的表教壞習慣 – mathguy
- 你的數據庫產品是什麼?你同時擁有SQL Server和Oracle,這實際上是正確的(只有兩個)約1%的病例。 – mathguy