MaxP0W3R
03-12-2007, 08:39
Hi,
es gibt eine Tabelle mit den spalten ids1, ids2
Diese symbolisieren die Verbindung zwischen 2 Personen.
Beispieltabelle
ids1 ids2
1 2
1 3
4 1
4 2
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:
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+"') )";
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
ids1 ids2
1 2
1 3
4 1
4 2
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:
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+"') )";
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

