我试图在一个查询中将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命令没有正确结束错误。 任何帮助表示赞赏。 感谢
答案 0 :(得分:1)
据我所知,每个派生表都必须有一个名字;所以尝试这样的事情:
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
答案 1 :(得分:0)
试试这个:
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`
答案 2 :(得分:0)
为什么不创建两个内部联接表的视图。然后,您可以使用左外连接匹配条件构建一个将视图连接到交易表的查询。
在我看来,观点是许多复杂查询的最容易被忽视的解决方案之一。