Autor |
Nachricht |
beeviZ
Threadersteller
Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 22.01.2007 14:32
Titel Verbindungspfad wie Xing in MySQL |
|
|
Mich würd rein interessehalber mal interessieren wie man eine Verbindungsstruktur wie Xing das bspw hat hinbekommt.
Also "User 1 kennt User 2 kennt User 3 kennt User 4".
Ich gehe davon aus das die Kontakte an sich alle in einer Tabelle gespeichert sind:
Code: | user_id | contact_id |
Soweit sogut. Aber wie bekomme ich jetzt hin, wenn ich in der Kontaktetabelle stehen habe:
das mir mein SQL ne Struktur ausgibt wie 1 -> 2 -> 3 -> 6?
Im Chat sind wir darauf gekommen das das ganz natürlich bei vielen Kontakten und vielen Ebenen sehr sehr rechenlastig wird. Das is natürlich auch alles andere als optimal. Kann mir einer von Euch schlauen Köpfen einfach erklären wie man sowas bewerkstelligen kann, wie die SQL Query ca. auszusehen hat, und wenn möglich auch noch möglichst rechen-unintensiv?
Bin mir sicher es führen viele Wege nach Rom. Vielleicht können wir das hier ja mal ein bißchen zur Diskussion nutzen. Ich brauch n bißchen Abwechslung vom Arbeitsalltag
|
|
|
|
|
Skyw4lker
Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht:
|
Verfasst Mo 22.01.2007 15:46
Titel
|
|
|
guckst du hier
parent child blabla usw.
Läuft über ne Baumstruktur und ist für ne DB ziemliche Kinderkacke was den Rechenaufwand angeht.
Auf der Oracle gibts den Connect By befehl der auf solche Queries ausgelegt ist, keine Ahnung
ob MySQL das auch hat.
Zuletzt bearbeitet von Skyw4lker am Mo 22.01.2007 15:49, insgesamt 1-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
beeviZ
Threadersteller
Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 22.01.2007 16:10
Titel
|
|
|
wenn ich das da richtig verstanden habe beim überfliegen dann gibts da aber nur einen punkt, oder? also nur den startpunkt (zeige mir: alle früchte/alle fleischsorten).
ich suche ja was wo ich start und ziel angebe, und er mir die kürzeste strecke dahin sucht.
|
|
|
|
|
Skyw4lker
Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht:
|
Verfasst Mo 22.01.2007 16:26
Titel
|
|
|
Achso,
hmm das geht in den Bereich Graphentheorie würde ich sagen. Hab ich mich im Grundstudium
mal mit rumgeplagt. Da gibts noch ein paar Variationen von soweit ich weiss, aber google hilft
dir da bestimmt weiter. Ist allerdings teilweise nicht von Pappe, hat mich damals den ein oder
anderen Nerv gekostet
click
Zuletzt bearbeitet von Skyw4lker am Mo 22.01.2007 16:29, insgesamt 1-mal bearbeitet
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 22.01.2007 17:23
Titel
|
|
|
nein, gibts in mysql nicht, da kommst du um rekursive queries nicht herum. es gibt ein paar andere gebilde, bspw. nested sets (mal googlen). ist hier aber ungeeignet, da für jeden user als ausgangspunkt ein neuer baum gespeichert werden müsste, so wie ich das sehe. Aber hierarchische daten in relationalen datenbanken sind eh meist ein performanceproblem, da gibts wenig elegante lösungen. glaub ich (ich hab mich mit baumstrukturen auch nur ein semester rumgequält).
|
|
|
|
|
beeviZ
Threadersteller
Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 22.01.2007 17:44
Titel
|
|
|
naja, studivz hats auch irgendwie geschafft und das läuft meines Wissens nach auch mit MySQL
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Mo 22.01.2007 18:05
Titel
|
|
|
Hast Du es mal ausprobiert?!
Ich meine nicht, dass das so ein großes Problem ist, die Seite, die
den Kontakt anzeigt, zieht ja sonst nicht viel aus der DB, da kann man schon etwas Rechenzeit
investieren. Und mit selects über IDs geht das doch flott.
Um das ganz etwas schnelle zur machen, könnte man die Zuordnung auch
unscharf machen.
Also statt
User 123 hat Kontakt 4567
User 123 hat Kontakte aus der ID-Reihen 4000-4999.
So kannst Du erstmal ein grobes Bild ermitteln, und herausfinden, bei welchen Usern es sich lohnt weiter
zu suchen.
|
|
|
|
|
Skyw4lker
Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht:
|
Verfasst Mo 22.01.2007 21:10
Titel
|
|
|
Das studivz macht das auch nur bis zu einer ziemliche endlichen Tiefe Ich glaube
maximal 4 oder so.
Läuft das echt auf ner MySQL?
Zuletzt bearbeitet von Skyw4lker am Mo 22.01.2007 21:13, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
XING API
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
[MySql]Lost connection to MySQL server during query
[PHP / MySQL] MySQL-Funktion gesucht: letzteÄnderungTabelle
BLOB in mysql per php oder mysql einfügen
|
|