Hallo zusammen,
in einem CMS-System können Benutzer Artikel mit einem "Gefällt mir" Button bewerten. Dieser Status wird in einer Mysql-Tabelle "flagging" gespeichert.
Die Tabelle hat folgende Felder (siehe dazu auch Screenshot)
flagging_id: eine fortlaufende Indexnummer
fid: die Flagging ID, wobei "Gefällt mir" fid=1 bedeutet.
entity_type: ist immer node (für dieses Beispiel uninteressant)
entity_id: die eindeutige id des Dokuments, für das ein Benutzer "Gefällt mir" geklickt hat.
uid: die eindeutige Benutzer-ID des Benutzers, der "Gefällt mir" geklickt hat.
sid: session id (für dieses Beispiel uninteressant)
So, und jetzt zur SQL-Frage, an der ich mir seit Tagen die Zähne ausbeisse.
Finde für den User A mit uid=4 einen beliebigen weiteren User B, dem mindestens drei gleiche Dokumente wie A gefallen und zeige anschließend alle weiteren Dokumente von B an, die dieser mit "Gefällt mir" markiert hat.
Vielleicht erleichtert ein Beispiel die Anforderung,
User A hat Dokumente mit folgender entity_id als "Gefällt mir" (fid=1) eingestuft.
25 37 128 732
User B hat Dokumente mit folgender entity_id als "Gefällt mir" (fid=1) eingestuft.
25 37 128 256 834
Das Ergebnis der Abfrage sollten die IDs 256 und 834 sein.
Damit habe ich es versucht, aber das ist leider falsch ;-)
select entity_id from table where entity_id NOT IN (select entity_id from table where uid =4 AND fid = 1) AND fid = 1;
Hat jemand einen Tipp für mich?
Danke & Grüße
Rhodes
in einem CMS-System können Benutzer Artikel mit einem "Gefällt mir" Button bewerten. Dieser Status wird in einer Mysql-Tabelle "flagging" gespeichert.
Die Tabelle hat folgende Felder (siehe dazu auch Screenshot)
flagging_id: eine fortlaufende Indexnummer
fid: die Flagging ID, wobei "Gefällt mir" fid=1 bedeutet.
entity_type: ist immer node (für dieses Beispiel uninteressant)
entity_id: die eindeutige id des Dokuments, für das ein Benutzer "Gefällt mir" geklickt hat.
uid: die eindeutige Benutzer-ID des Benutzers, der "Gefällt mir" geklickt hat.
sid: session id (für dieses Beispiel uninteressant)
So, und jetzt zur SQL-Frage, an der ich mir seit Tagen die Zähne ausbeisse.
Finde für den User A mit uid=4 einen beliebigen weiteren User B, dem mindestens drei gleiche Dokumente wie A gefallen und zeige anschließend alle weiteren Dokumente von B an, die dieser mit "Gefällt mir" markiert hat.
Vielleicht erleichtert ein Beispiel die Anforderung,
User A hat Dokumente mit folgender entity_id als "Gefällt mir" (fid=1) eingestuft.
25 37 128 732
User B hat Dokumente mit folgender entity_id als "Gefällt mir" (fid=1) eingestuft.
25 37 128 256 834
Das Ergebnis der Abfrage sollten die IDs 256 und 834 sein.
Damit habe ich es versucht, aber das ist leider falsch ;-)
select entity_id from table where entity_id NOT IN (select entity_id from table where uid =4 AND fid = 1) AND fid = 1;
Hat jemand einen Tipp für mich?
Danke & Grüße
Rhodes