2016-11-08 93 views
0

我的坏,它没有becouse一个表的工作没有被加载,它的工作...如何从两个不同的连接路径获取两个值?

我希望创建一个表只有两个值的报告从两个不同的连接路径和我不知道如何去做,下面是我想要实现的一个例子。

+--------------------+ 
|  Table1  | 
+--------+-----+-----+ 
| idA | idB | idC | 
+--------+-----+-----+ 

+--------------------+ 
|  Table2  | 
+--------+-----+-----+ 
| idA | idB | idD | 
+--------+-----+-----+ 

+--------------------+ 
|  Table3  | 
+----------+---------+ 
| idD  | value1 | 
+----------+---------+ 

+--------------------+ 
|  Table4  | 
+----------+---------+ 
| idC  | idE | 
+----------+---------+ 

+--------------------+ 
|  Table5  | 
+----------+---------+ 
| idE  | value2 | 
+----------+---------+ 

我需要两个值,值1和值2

我尝试用这样的:

SELECT Table3.value1, Table5.value2 
    FROM Table1 
    INNER JOIN Table2 ON Table1.idA = Table2.idB 
    AND Table1.idB = Table2.idB 
    INNER JOIN Table3 ON Table2.idD = Table3.idD 
    INNER JOIN Table4 ON Table1.idC = Table4.idC 
    INNER JOIN Table5 ON Table4.idE = Table5.idE 

回答

0

试试这个

SELECT 
    Table3.value1, Table5.value2 
FROM 
    Table1 
JOIN 
    Table2 
ON 
    Table1.idB = Table2.idB 
JOIN 
    Table3 
ON 
    Table2.idD = Table3.idD 
JOIN 
    Table4 
ON 
    Table1.idC = Table4.idC 
JOIN 
    Table5 
ON 
    Table4.idE = Table5.idE 
-- WHERE 
-- Table1.idA = [whatever] -- hardly suggest to filter your query 

我几乎没有显示出在最后,你过滤您的数据。这个答案是DB Schema Agnostic,这意味着我不确定你的模式是如何工作的,但是查询是COUNTING,因为在所有表中至少有一个匹配的行。如果情况并非如此,则可能需要使用left outer连接并添加一些null checking。这个概念几乎是一样的,我把它叫做dragging这个ID一直到他们需要的地方:)。希望这是有道理的。我也很难推荐你在SQL JOIN上获得更多的文档。希望这可以帮助。

+0

我的不好,它没有工作,因为其中一个表未加载,它工作...感谢您的答案大卫埃斯皮诺! – rodixxi

+0

如果答案是正确的......你会介意@rodixxi的投票吗? :D非常感谢 –

相关问题