加入一个键上的两个表,然后离开外部加入一个表的一些标准
我试图在单个查询中一起加入3个表。前两个有一个键,所以每个条目都有一个匹配的条目。然后这个连接表将由第三个表连接,该表可以为第一个表(连接表)中的每个条目生成多个条目。加入一个键上的两个表,然后离开外部加入一个表的一些标准
select * from
(select a.bidentifier, a.bsession, a.symbol, b.jidentifier, b.JSession
from trade_monthly a, trade_monthly_second b
where
a.bidentifier = b.jidentifier AND
a.bsession = b.JSession)
left outer join
trade c
on c.symbol = a.symbol
order by a.bidentifier, a.bsession, a.symbol, b.jidentifier, b.JSession, c.symbol
左外连接上会有更多条件(不仅仅是c.symbol = a.symbol),但现在这应该是有用的。我如何以这种方式嵌套查询?我刚开始SQL命令没有正确结束的错误。 任何帮助表示赞赏。 谢谢
对于我所知道的每一个派生表必须给一个名字;所以尝试是这样的:
SELECT * FROM
(SELECT a.bidentifier, ....
...
a.bsession = b.JSession) t
LEFT JOIN trade c
ON c.symbol = t.symbol
ORDER BY t.bidentifier, ...
无论如何,我认为你可以使用一个简单的查询:
SELECT a.bidentifier, a.bsession, a.symbol, b.jidentifier, b.JSession, c.*
FROM trade_monthly a
INNER JOIN trade_monthly_second b
ON a.bidentifier = b.jidentifier
AND a.bsession = b.JSession
LEFT JOIN trade c
ON c.symbol = a.symbol
ORDER BY a.bidentifier, a.bsession, a.symbol, b.jidentifier, b.JSession, c.symbol
试试这个:
SELECT
`trade_monthly`.`bidentifier` AS `bidentifier`,
`trade_monthly`.`bsession` AS `bsession`,
`trade_monthly`.`symbol` AS `symbol`,
`trade_monthly_second`.`jidentifier` AS `jidentifier`,
`trade_monthly_second`.`jsession` AS `jsession`
FROM
(
(
`trade_monthly`
JOIN `trade_monthly_second` ON(
(
(
`trade_monthly`.`bidentifier` = `trade_monthly_second`.`jidentifier`
)
AND(
`trade_monthly`.`bsession` = `trade_monthly_second`.`jsession`
)
)
)
)
JOIN `trade` ON(
(
`trade`.`symbol` = `trade_monthly`.`symbol`
)
)
)
ORDER BY
`trade_monthly`.`bidentifier`,
`trade_monthly`.`bsession`,
`trade_monthly`.`symbol`,
`trade_monthly_second`.`jidentifier`,
`trade_monthly_second`.`jsession`,
`trade`.`symbol`
这一个给我一个缺少选择关键字错误 – user1216565 2012-02-17 15:57:11
我改变了它,它现在失效。 – kenik 2012-02-17 16:54:45
嗯..现在我只是得到一个表或视图不存在代码 – user1216565 2012-02-17 17:07:55
你为什么不只是创建图的两个内部连接表。然后你就可以建立一个连接这观点使用左外连接匹配标准贸易表的查询。
在我看来,意见是最容易被忽视的解决方案之一,许多复杂的查询。
Oracle是否需要以分号结尾的语句? – simchona 2012-02-17 15:33:08