Hi,
es gibt eine Tabelle mit den spalten ids1, ids2
Diese symbolisieren die Verbindung zwischen 2 Personen.
Beispieltabelle
Jetzt geht es darum, die gemeinsamen Freunde von z.B. 1 und 4 zu finden (das wäre dann hier nur die 2)
Mein bisheriger Lösungsansatz:
Alle Datensätze mit ids von Person 1, dann alle Datensätze von Person 2 und die dann verbinden, aber dadurch, dass halt die jeweiligen is an 1. oder 2. STelle stehen können, wirds schwierrig und so ist am Ende jeder mit jedem verbunden, obwohl das nicht stimmt.
hier mal der Query:
Hat hier jmd. eine Idee ?
Oder kann man z.B. in einer query spaltenwerte vertauschen ? so dass wenn nach einem datensatz gesucht wird der in s1 oder s2 sein kann, der immer in s1 als ausgabe geschrieben wird ?
Das ganze is für ein kleines akademisches Projekt, es wurde ein freundesnetzwerk (mit offizieller erlaubnis) ausgelesen und alles in eine Mysql 5.0.24 db geschrieben
vielen dank
cya max
es gibt eine Tabelle mit den spalten ids1, ids2
Diese symbolisieren die Verbindung zwischen 2 Personen.
Beispieltabelle
Code:
ids1 ids2 1 2 1 3 4 1 4 2
Mein bisheriger Lösungsansatz:
Alle Datensätze mit ids von Person 1, dann alle Datensätze von Person 2 und die dann verbinden, aber dadurch, dass halt die jeweiligen is an 1. oder 2. STelle stehen können, wirds schwierrig und so ist am Ende jeder mit jedem verbunden, obwohl das nicht stimmt.
hier mal der Query:
Code:
String query = "SELECT * FROM verbindungen v1 WHERE ids1 = '"+ids+"' || ids2 = '"+ids+"'" + " && EXISTS (SELECT * FROM verbindungen v2 WHERE (v1.ids1 = v2.ids1 && v1.ids1 NOT LIKE '"+ids+"' && v2.ids2 = '"+friend_ids+"') || (v1.ids1 = v2.ids2 && v1.ids1 NOT LIKE '"+ids+"' && v2.ids1 = '"+friend_ids+"') || (v1.ids2 = v2.ids1 && v1.ids2 NOT LIKE '"+ids+"' && v2.ids2 = '"+friend_ids+"') || (v1.ids2 = v2.ids2 && v1.ids2 NOT LIKE '"+ids+"' && v2.ids1 = '"+friend_ids+"') )";
Oder kann man z.B. in einer query spaltenwerte vertauschen ? so dass wenn nach einem datensatz gesucht wird der in s1 oder s2 sein kann, der immer in s1 als ausgabe geschrieben wird ?
Das ganze is für ein kleines akademisches Projekt, es wurde ein freundesnetzwerk (mit offizieller erlaubnis) ausgelesen und alles in eine Mysql 5.0.24 db geschrieben
vielen dank
cya max
Kommentar