Martin Hinrichs: Rückgabewerte sind geordnet? lässt sich das verhindern?

Beitrag lesen

Ok, ich versuche es noch genauer anhand von Beispielen.
Stell Dir sowas wie ne Hobbysuchseite vor. Da tragen sich Leute ein und geben ihre Interessen an.
Nun kannst Du angeben was Du suchst und bekommst die Leute angezeigt, die am meisten mit Dir gemein haben. Das ist sehr vereinfacht, reicht aber.

Was in der Datenbank steht:
Eine Tabelle mit persönlichen Daten der Nutzer. Nennen wir sie "personen"
Eine Tabelle mit einer Angabe der Hobbies. Diese besteht aus einer ID, einem "Hobby" und einer ReferenzID zu den Daten in "personen". Nennen wir diese Tabelle "hobby"

So sieht "hobby" etwa aus:

id   hobby        personID
--------------------------
1    busfahren    1001
2    schlafen     1002
3    schlafen     1001
4    staubsaugen  1003
5    nachdenken   1002
6    nachdenken   1003
7    schlafen     1003
[..]

Nun kann ich als Besucher der Seite suchen, etwa nach "schlafen und  busfahren". Dabei ist nicht zwingend eine totale übereinstimmung erforderlich, sondern nur eine bestmögliche.

mein SQL Query liefert mir dann "1001,1002,1001,1003". Nach der Umformung über array_count_values und einer Sortierung habe ich dann das schöne Ergebnis: "1001,1003,1002"
"1001" hat die meisten Übereinstimmungen und kommt deshalb ganz vorne und 1003 kommt vor 1002 weil die ID höher ist und das heisst der Nutzer ist neuer in der Datenbank und sollte deshalb auch eher angezeigt werden.

Naja soweit so gut, funktioniert ja alles.
Nun würde ich nun noch die persönlichen Daten aus der DB holen wollen und diese genau in der Reihenfolge der IDs in meinem schönen Array anzeigen, aber da spielt ja wie ich jetzt gelernt habe die DB nicht mit.

Ich werde mir jetzt ein Bier aufmachen und das Notebook beleidigen, sowas hat in der jüngeren Vergangenheit beim Denken geholfen.

Für jeden Tipp weiterhin dankbar,
Marting