2013-01-08 107 views
1

我想寫一個查詢或兩個,我可以用來並排顯示同一張表的兩個單獨的視圖。我有orig,dest和東西的記錄。對於每個原始文件,每個目標都有一個記錄以及與其相關的內容。所以說一個是亞特蘭大,一個是鳳凰。將有兩個記錄,同時具有亞特蘭大和菲尼克斯,無論是原稿或DEST:SQL並排查詢。匹配路線

ORIG /DEST /STUFF 
Atlanta/Phoenix/Stuff for this record 
Phoneix/Atlanta/Stuff for this record 

我需要的是一個側Atlanta的側上市,一面每DEST,並在亞特蘭大的每DEST其他。我需要爲每個記錄做這件事。所以結果會是這樣的:

Atlanta/Athens/Stuff : Athens/Atlanta/Stuff 
Atlanta/Chicago/Stuff : Chicago/Atlanta/Stuff 
Boulder/Athens/Stuff : Athens/Boulder/Stuff 

它需要在Excel結束了,所以我可以做兩個單獨的查詢,但我無法弄清楚如何將它們相匹配。這是據我已經得到了:

SELECT a.orig, a.dest, a.stuff from table a WHERE a.orig = 'ATL' and a.orig IN (SELECT b.dest from table b WHERE b.dest = 'ATL') 

編輯:東西是記錄ATL/DEN DEN和/ ATL之間的不同。

回答

1
Select a.orig, a.dest, a.stuff, b.orig, b.dest, b.stuff 
from a inner join a as b on 
a.orig = b.dest and b.orig = a.dest 
where a.orig = 'ATL' 
Order by a.orig, a.dest 

因爲它似乎你想要有DEST鳳凰排隊與原鳳凰等,並presbably東西是不同的和有意義的

+0

是的東西是不同的和有意義的。謝謝! – BearSkyview

2

如下回答你在中間ATL每一個組合的問題:

select aleft.orig, aleft.dest, aleft.stuff, a.orig, a.dest, a.stuff 
from table a join 
    table aleft 
    on a.orig = aleft.dest 
where a.orig = 'ATL' 
+0

這是非常接近除了它的上市像博爾德/亞特蘭大/博爾德,芝加哥/亞特蘭大/博爾德,丹佛/亞特蘭大/博爾德... – BearSkyview

+0

@DouglasBubbletrousers。 。 。那有什麼問題? –

+0

需要:博爾德/亞特蘭大/博爾德,芝加哥/亞特蘭大/芝加哥 – BearSkyview

1

試試這個:

SELECT a.orig, a.dest, a.stuff, b.orig, b.dest, b.stuff 
FROM table a 
, table b 
WHERE a.orig = b.dest 
AND b.orig = a.dest 
ORDER BY a.orig, b.orig 
0

如果你需要與ATL的每一個組合作爲dest或origin只是做 SELECT a.orig,a.dest,a.stuff,b.orig,b.dest,b.stuff FROM table a as a CROSS JOIN table b as b WHERE a.orig =「ATL」 OR b.dest =「ATL」

你舉的例子有a.orig約束,從而也改變,如果你的意思是DEST在你的問題說明。