1

我正在尝试编写一个或两个查询,可用于并排显示同一个表的两个单独视图。我有 orig、dest 和其他东西的记录。对于每个 orig 都有一个记录,其中包含每个 dest 以及与之相关的内容。所以说一个起源是亚特兰大,一个是凤凰城。将有两条记录同时包含亚特兰大和凤凰城在原点或终点:

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

我需要的是并排列出亚特兰大的每个 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 之间的东西是不同的。

4

4 回答 4

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'
于 2013-01-08T19:47:43.920 回答
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
于 2013-01-08T19:52:10.480 回答
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 Phoenix 与 orig Phoenix 等对齐,大概这些东西是不同的和有意义的

于 2013-01-08T19:56:51.280 回答
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' 或 b.dest = 'ATL'

您的示例具有 a.orig 约束,因此如果您的意思是问题中所述的 dest ,也请更改该约束。

于 2013-01-08T19:57:08.990 回答