如何从两个不同的连接路径中获取两个值?

时间:2016-11-08 22:13:47

标签: sql sql-server vb.net

我的不好,它没有用,因为其中一张表没有加载,IT工作......

我正在寻找为两个不同的连接路径只有两个值的报表创建一个表,我不知道该怎么做,下面是我想要实现的一个例子。

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

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

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

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

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

我需要两个值,value1和value2

我试过这个:

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

1 个答案:

答案 0 :(得分: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称为ids一直到它们所需要的地方:)。希望这是有道理的。我也不建议你在SQL JOIN上获得更多文档。希望这会有所帮助。