MS Access选择多个联接

时间:2015-11-02 14:32:45

标签: c# sql ms-access join

我试图通过下表中的c#和odbc进行选择。

LinkTab (FromDevID, FromPort, ToDevID, ToPort)
DevList (ID,DevName...)

结果应该是

FromDevName  | FromPort | ToDevName | ToDevPort

我已经尝试过以下声明:

SELECT dev1.DevName, lt.FromPort, dev2.DevName, lt.ToPort 
FROM (LinkTab lt
INNER JOIN DevList dev1 ON lt.FromDevID = dev1.ID) 
INNER JOIN devList dev2 ON lt.ToDevID = dev2.ID

我无法获得所有记录。我想连接条件有误。

1 个答案:

答案 0 :(得分:1)

据推测,您需要left join

SELECT dev1.DevName, lt.FromPort, dev2.DevName, lt.ToPort 
FROM (LinkTab lt LEFT JOIN 
      DevList dev1
      ON lt.FromDevID = dev1.ID
     ) LEFT JOIN
     devList dev2
     ON lt.ToDevID = dev2.ID;

您的查询不会返回所有行的原因是因为设计可能并不总是匹配。如果是这种情况,那么INNER JOIN将过滤掉具有不匹配设备的行。 LEFT JOIN将保留第一个表中的所有行,为第二个和第三个表中的列分配NULL