2014-02-16 67 views
0

我正在使用vfp9。聯合查詢不起作用

我有兩個表:

Countries with the field: 
id 
-- 
1 
2 
3 

Students with the fields: 
id nname nation1id nation2id nation3id 
-------------------------------------------- 
1 A   2   1 
2 B   1 
3 C   2   3   1 

I want a query with this output: 
countryid nname dummy 
-------------------------- 
1    B  1 
1    A  2 
1    C  3 
2    A  1 
2    C  1 
3    C  2 

換句話說,ID爲1國家,我想列出誰擁有它的人作爲nation1id第一,那麼那些誰擁有它作爲nation2id,以及持續的誰有它作爲nation3id。然後,我將爲ID爲2的國家執行相同的操作,依此類推。

我曾嘗試此查詢:

select countries.id from countries ; 
(SELECT nname, 1 FROM students WHERE nation1id = countries.id ; 
UNION ; 
select nname, 2 FROM students WHERE nation2id = countries.id ; 
UNION ; 
select nname, 3 FROM students WHERE nation3id = countries.id ; 
order by 2) 

,但得到「命令包含識別短語/關鍵字」的錯誤消息。

問候,

月Nordgreen

回答

0

失蹤貴國表列,但失敗是因爲你有兩個表列...您的國家,你的(選擇/集),但之間沒有逗號他們或JOIN條件。 至於你的國家表格沒有列出字段,我相信你正在尋找國家的名字,但在學生的桌子上有「nname」,並且不知道我的看法是否正確。無論如何,你可以得到你的查詢輸出如下。

select ; 
     allStNat.Nation as CountryID,; 
     allStNat.nname,; 
     allStNat.NationSort ; 
    from ; 
     (SELECT nname, ; 
       nation1id as Nation, ; 
       1 as NationSort; 
      FROM students ; 
      WHERE nation1id > 0; 
     UNION ALL; 
     select nname, ; 
       nation2id as Nation,; 
       2 as NationSort; 
      FROM students ; 
      WHERE nation2id > 0; 
     UNION ALL; 
     select nname, ; 
       nation3id as Nation,; 
       3 as NationSort ; 
      FROM students ; 
      WHERE nation3id > 0) allStNat; 
    order by ; 
     1, 3, 2 

如果有一個從你想要的國家表等內容,我會通過增加實際的國家的名稱和條款調整的順序,因爲在列表中的附加欄僅略有改變。

select ; 
     allStNat.Nation as CountryID,; 
     c.Country,; 
     allStNat.nname,; 
     allStNat.NationSort ; 
    from ; 
     (same select/union query above) allStNat; 
     JOIN Countries c ; 
      ON allStNat.Nation = c.id 
    order by ; 
     1, 4, 3 
+0

感謝您的評論!我在我的問題中添加了字段到第一個表。 nname是學生的暱稱。國家的名稱是在countries.country,而國家的ID存儲在nation1id等 –

+0

很高興幫助...順便說一句,作爲新手,檢查幫助/旅遊網頁。標記問題並檢查幫助他人知道什麼工作和解決了某個問題,也有助於他人不浪費時間解決已經解決的問題。 – DRapp

+0

感謝您的提示,但問題尚未解決。我有兩個國家和學生的表格。當我有工作解決方案時,我會回覆。 –