2012-06-19 37 views
0

我寫嵌入C語言程序與下面的表一個SQL:在A,BSQL排名好幾桌

table index:id, xx 

table a:id, year, yy 

table b:id, year, zz 

table c:id, year, vv 

ID,C屬於ID在指數

那麼如何按年份選擇所有的ID順序?

+0

a,b,c中是否可以存在同一個id?一些示例數據可能有幫助 – Blorgbeard

回答

0

你的問題不是很清楚你後面的是什麼。從表面上看,一個可能的答案可能是:

SELECT i.id, i.xx, a.year, a.yy 
    FROM index AS i 
    JOIN a ON i.id = a.id 
UNION 
SELECT i.id, i.xx, b.year, b.zz 
    FROM index AS i 
    JOIN b ON i.id = b.id 
UNION 
SELECT i.id, i.xx, c.year, c.vv 
    FROM index AS i 
    JOIN c ON i.id = c.id 
ORDER BY year, id; 

如果所有表的A,B,和C加入到指數單行,那麼有替代查詢(使用多個連接,可能是他們中的一些是LEFT OUTER加入)。如果由yy,zzvv表示的列不兼容,則需要指定如何處理它們(或者簡單地將它們留在查詢之外)。