Wertepaare aus einer Tabelle in neue Tabelle ablegen

vanoo83

Neuer Benutzer
Beiträge
2
Hallo zusammen

Ich bin gerade an einem Projekt, in welchem ich in einer Tabelle gleiche Wertepaare finden muss und diese in eine neue Tabelle schreiben muss. Da Projekt besitzt eine SQL Datenbank welche folgenden Beispielhaften Inhalt hat:

Tabelle mit Nutzern und Kontakte (siehe Screenshot). Die Einträge von Nutzer und Kontakt beziehen sich jeweils auf die selbe Tabelle Person (Primarschlüssel von Person ist Fremdschlüssel von Nutzer sowie von Kontakt). Ich muss nun eine neue Tabelle erstellen, welche als Inhalt alle Wertepaare beinhaltet, bei welchen User und Kontakt die selben sind. Im meinem Beispiel wäre das die Zeile mit der ID 1 und 7 sowie 8/9 und 11/12. Wie kann ich in SQL eine solche Abfrage machen damit ich das beschriebene Resultat erhalte?

In einer Hochsprache würde ich das mit zwei verschachtelten FOREACH-Schleifen machen. Wie geht das in einer SQL Abfrage?

Besten Dank für eure Hilfe

Silvano
 

Anhänge

  • Bildschirmfoto 2018-05-23 um 19.52.36.png
    Bildschirmfoto 2018-05-23 um 19.52.36.png
    14,7 KB · Aufrufe: 4
Werbung:
Mal so als demo:

Code:
test=*# select * from vanoo83 ;
 id | usr | contact
----+-----+---------
  1 |   1 |       2
  5 |   1 |       3
  6 |   1 |       5
  7 |   2 |       1
  8 |   2 |       3
  9 |   3 |       2
 10 |   3 |       6
 11 |   5 |       6
 12 |   6 |       5
(9 Zeilen)

test=*# select v1.id, v2.id from vanoo83 v1 inner join vanoo83 v2 on (v1.usr,v1.contact)=(v2.contact,v2.usr) and v1.id < v2.id;
 id | id
----+----
  1 |  7
  8 |  9
 11 | 12
(3 Zeilen)

test=*#

Gähn.
 
Werbung:
Code:
(v1.usr,v1.contact)=(v2.contact,v2.usr)
Dürfte in MSSQL eigentlich nicht gehen (leider). Läßt sich aber hier einfach durch zwei Gleichungen ersetzen.
 
Zurück
Oben