Ich schaffte es, eine Abfrage für alle Freunde und Freunde von Freunden eines bestimmten Benutzers haben. Ich habe einen Benutzertisch und eine Freundschaftsbeitrittstabelle. Zur Vereinfachung sagen wir einfach, dass die Benutzertabelle nur einen Primärschlüssel hat. Die Freundschafts-Tabelle hat die Spalten user_id und friend_id. Die Abfrage lautet wie folgt:Sphinx-Indexer benutzerdefinierte Abfrage für sql_attr_multi
"SELECT DISTINCT friends.user_id, friends.friend_id, users.*
FROM FRIENDSHIPS friends, USERS
WHERE USERS.id = friends.friend_id AND friends.user_id = #{u.id}
UNION
SELECT DISTINCT fof.user_id, fof.friend_id, users.*
FROM FRIENDSHIPS friends, FRIENDSHIPS fof, USERS
WHERE USERS.id = fof.friend_id AND friends.friend_id = fof.user_id AND friends.user_id = #{u.id}"
u.id die ID des Benutzers, den ich alle Freunde und Freunde von Freunden bekommen möchten.
Diese Abfrage funktioniert sehr gut, aber ich möchte dies in eine von sphinx sql_attr_multi verwendbare Abfrage konvertieren. Ich habe versucht, es direkt wie folgt zu platzieren:
aber das offensichtlich fehlgeschlagen.
Wie mache ich diese Abfrage von Sphinx-Indexer verwendbar?
Vielen Dank im Voraus für alles, was mich in die richtige Richtung zeigen wird.
Danke für den Tipp, aber ich bin immer noch unsicher, wie man das macht. Das bedeutet, dass ich eine andere Abfrage erstellen muss? –
Nein. Ihre Hauptabfrage zum Abrufen der Daten für den Index (sql_query) sollte eine ID auswählen. Diese ID muss mit der ersten Spalte übereinstimmen, die in Ihrer sql_attr_multi-Abfrage ausgewählt wurde. Die zweite Spalte, die Sie in Ihrer sql_attr_multi-Abfrage auswählen, ist diejenige, die Sie tatsächlich nach Werten suchen möchten. Sie verwenden nicht WHERE ID = $ ID in sql_attr_multi (die Auswahl dieser ID-Spalte erreicht das gleiche) – Jon
Nach stundenlangem Versuch, das herauszufinden, bin ich immer noch an einer Straßensperre. Ich habe andere Abfragen gesehen, die Joins verwenden. Da ich kein Experte für SQL-Abfragen bin, ist es für meine Abfrage möglich, eine "Joins" -Version zu haben? –