Mailinglisten-Archive |
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