データをフィルタリングするのにtNetworkSocket
とtPatchpanelPorts
の2つのテーブルがあります。
SELECT * FROM tPatchpanelPorts
を実行するとデータがありますが、SELECT * FROM tNetworkSocket
にはデータがありません。これは正しいです。
私はテーブルの1つにデータがあってもSQL - クエリの結合結果が空です
SELECT Distinct HostID, HostName, HostTypeID, DomainName
FROM tHosts, tDomains, tPatchpanelPorts, tNetworkSocketPort
WHERE tHosts.DomainID=tDomains.DomainID
AND (tPatchpanelPorts.ConnectedHostID = tHosts.HostID OR tNetworkSocketPort.ConnectedHostID = tHosts.HostID) And AccountID=1
を実行した場合、私は何のデータを取得していないが、私は、クエリからtNetworkSocketPort
を削除する場合のように見える:私はデータを取得
SELECT Distinct HostID, HostName, HostTypeID, DomainName
FROM tHosts, tDomains, tPatchpanelPorts
WHERE tHosts.DomainID=tDomains.DomainID
AND (tPatchpanelPorts.ConnectedHostID = tHosts.HostID) And AccountID=1
。
は私が明示的で
あなたは 'INNER JOINをない場合'データなしのテーブルには、すべての結果を効果的にフィルタリングします。 – Siyual
最新の明示的なJOIN構文に切り替えます。 (エラーなし)、読みやすく、外部結合(必要な場合)に変換する方が簡単です。 – jarlh
ところで、あなたはMySQLまたはMS SQL Serverを使用していますか? (含まれていない製品にタグを付けないでください) – jarlh