phpbar.de logo

Mailinglisten-Archive

friendster, open BC, kontakte 6. Ebene

friendster, open BC, kontakte 6. Ebene

ibekowies at shavingkiwis.de ibekowies at shavingkiwis.de
Mon Feb 7 23:47:45 CET 2005


Hallo!

Hat jemand hier schon einmal soetwas implementiert?

Tabelle Personen
Tabelle Kontakte (Person A kennt Person B)

Query:
Finde den kuerzesten Pfad von A nach F (und moeglichst performant)
Also A kennt B, B kennt C, C kennt D ... E kennt F

Ich gruebel und recherchiere, finde aber nichts hilfreiches zu dem 
Thema.




Meine aktuellen Gedanken sind:

1. Hole alle Bekanntschaften von A ueber die ersten 3 Ebenen, also 
die Bekannten von A, deren Bekannte und deren Bekannte

SELECT c1.*, c2.*, c3.*
FROM contacts c1
LEFT JOIN contacts c2 ON (c1.id_persons2 = c2.id_persons1)
LEFT JOIN contacts c3 ON (c2.id_persons2 = c3.id_persons1)
WHERE c1.id_persons1 = $ID_VON_A

Wenn F darin ist -> fertig.

Dann hole ich alle Kontakte ueber 3 Ebenen von F aus.

Wenn A dabei ist -> fertig

Dann vergleiche ich die dritte ebene von A mit der dritten ebene von 
F, ob dort eine uebereinstimmung ist.

Wenn ja -> fertig

So muesste ich zumindest, wenn ich mich nicht irre, 5. Ebenen 
abgedeckt haben.

Nun kann es aber wohl auch eine 6. Ebene geben...

Wenn ich von durchschnittlich 10 Kontakten pro Person ausgehe habe 
ich in der dritten Ebene bereits 10.000 Zeilen zu fetchen.



Ist dieses Thema schon einmal jemandem vorgekommen?

Viele Gruesse, Ilja


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive