我有一个定义“连接”和另一个定义“设备”的表
我在connections表中有一个“source_system_name”和'destination_system_name'列。
"system_name"表中的值匹配的"equipment"
设备可以是多种类型:

1. Core
2. Aggregation
3. Customer.

我试图定义一个查询,以返回设备表中源字段和目的字段的“类型”。
连接表如下:
id | Source Name | Source port | Destination Name | Destination Port | etc...
-----------------------------------------------------------------------------
4    Device_core1  1/1           Device_agg3        3/4

设备表如下:
id | Equip_name   | Equip type | etc....
------------------------------------------
3    Device_core1 | Core
7    Device_agg3  | Aggregation

我试图让结果返回如下:
id | Source Name |Source port|Source type|Destination Name|Destination Port|Destination type|
---------------------------------------------------------------------------------------------
1   Device_core1  1/1         Core        Device_agg3      3/4              Aggregation

我试图使用的查询是:
SELECT DISTINCT * FROM connections
LEFT JOIN equipment on connections.system_name_source=equipment.system_name
OR connections.system_name_dest=equipment.system_name;

当我这样做时,我得到了两条记录,其中,Source type字段被Destination type覆盖,反之亦然。
是否有查询可用于查找源和目标数据的equipment表?
即。,
id | Source Name |Source port|Source type|Destination Name|Destination Port|Destination type|
1   Device_core1  1/1         Aggregation Device_agg3      3/4              Aggregation
2   Device_core1  1/1         Core        Device_agg3      3/4              Core

最佳答案

你需要自己加入。。尝试此查询:

SELECT
connections.id,
connections.Source_Name,
connections.Source_port,
src.systype SourceType,
connections.Destination_Name,
connections.Destination_Port,
tgt.systype DestinationType
FROM connections
LEFT JOIN equipment src on connections.system_name_source=src.system_name
LEFT JOIN equipment tgt on connections.system_name_dest=tgt.system_name

在上面的查询中,我将equipment表的别名设置为srctgt的两倍。

10-06 05:41