Join

將 1 列連接到另一個表中的多個列

  • January 8, 2017

我有 2 個表埠映射和設備

Portmap 具有以下列。ID(即 PK)、networkDeviceID(FK 到設備表)、埠、時間戳、描述、connectedDeviceID(FK 到設備表)

設備具有以下列。ID(即 PK)、modelID(模型表的 FK)、主機名、序列號、lanmac、wmac

在此處輸入圖像描述

我對如何在進行加入時獲得正確的相應主機名顯示有一個心理障礙。例如:

如果埠映射表中的第 1 行包含以下 networkdeviceID = 2 和 ConnecteddeviceID = 1

如何讓它顯示每個 ID 值的主機名,而不僅僅是給我 INT 值

編輯

如何從 deviceID 獲取主機名以顯示在 networkdeviceID 列和 conntecteddeviceID 列中?

編輯2

在此處輸入圖像描述

也許這可以幫助您了解我需要什麼。

我希望將主機名 mvl 顯示在 networkdeviceID 欄位中,並將 mvd 顯示在第 1 行的 connectedDeviceID 欄位中。然後在第 2 行顯示 networkdeviceID 的 mvd 和 connectedDeviceID 欄位的 mvl 。

我需要這樣,所以如果說最終使用者決定將主機名 mvl 更改為 xyz1234,整個數據庫中的每條記錄都不會自動更新為 xyz123,而不必手動更改。或者如果在埠映射表中他們將 row2 networkdebiceID 更改為 7,它會自動顯示 mvdxxxxx 的設備表主機名

你明白我現在想要做什麼了嗎?

嘗試這樣的事情:

SELECT p.ID, d1.hostname, p.port, p.timestamp, p.description, d2.hostname
FROM Devices d1, Portmap p, Devices d2
WHERE d1.id = p.networkdeviceID and d2.id = p.connecteddeviceID;

嘗試這個:

SELECT d.hostname
FROM Devices d 
INNER JOIN portmap p ON d.ID = p.ID
WHERE p.networkdeviceID = 2 and p.ConnecteddeviceID = 1

我希望我能很好地理解你。

引用自:https://dba.stackexchange.com/questions/160291