ich habe und Oracle 11g-Datenbank mit den folgenden drei Tabellen (vereinfacht):mehr Spalten auswählen, basierend auf dem max einer anderen Spalte
IP-Tabelle, eine IP-Kennung enthält, die IP und IP-Status und ein FQDN. IPs könnten wiederholt werden.
+-------+-------------+-----------+-----------+
| ID_IP | IP | IP_STATUS | FQDN |
+-------+-------------+-----------+-----------+
| 1 | 192.168.1.1 | 1 | test.com |
| 2 | 192.168.1.1 | 2 | test.com |
| 3 | 192.168.1.1 | 3 | test.com |
| 4 | 10.10.45.12 | 2 | test2.com |
+-------+-------------+-----------+-----------+
VLAN-Tabelle, enthält, und die VLAN-Kennung und die VLAN-Nummer
+---------+-------------+
| VLAN_ID | VLAN_NUMBER |
+---------+-------------+
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
+---------+-------------+
A Tabelle VLANs und IPs Korrelieren:
+-------+---------+
| IP_ID | VLAN_ID |
+-------+---------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 2 |
+-------+---------+
In der tatsächlichen IP-Tabelle, der Primärschlüssel ist die Tupel (IP, IP_STATUS). Mein Ziel ist es, eine neue Tabelle zu erstellen, die IP_STATUS eliminiert, und dazu möchte ich IPs aggregieren und ID_IP und FQDN der IP erhalten, deren VLAN_NUMBER höher ist. Die Antwort für die SELECT-Abfrage würde wie folgt sein:
+-------+-------------+-----------+
| ID_IP | IP | FQDN |
+-------+-------------+-----------+
| 3 | 192.168.1.1 | test.com |
| 4 | 10.10.45.12 | test2.com |
+-------+-------------+-----------+
ich die IP bekommen kann die folgende Abfrage verwenden:
SELECT i.IP, max(v.VLAN_ID)
FROM IPS i
LEFT JOIN VLAN_IP_REL v_i ON i.ID_IP=v_i.ID_IP
LEFT JOIN VLANS v ON v_i.ID_VLAN=v.ID_INSTANCIA
GROUP BY i.IP;
Was ich nicht weiß, ist, wie die anderen Spalten zu erhalten. Ich habe versucht, mit einer Unterabfrage wie folgt aus:
SELECT i.ID_IP, i.IP, i.FQDN
FROM IPS i
WHERE i.IP IN (
SELECT i.IP, max(v.VLAN_ID)
FROM IPS i
LEFT JOIN VLAN_IP_REL v_i ON i.ID_IP=v_i.ID_IP
LEFT JOIN VLANS v ON v_i.ID_VLAN=v.ID_INSTANCIA
GROUP BY i.IP;
)
Aber es funktioniert nicht, da die Unterabfrage zwei Werte zurückgibt, und ich brauche die max (vlan.VLAN_ID) die Aggregation zu tun.
Wie konnte ich die richtige IP_ID bekommen?
Vielen Dank!
Genau das, was ich wollte, danke! – Cea33