Hallo zusammen,
ich brauche mal einen gedanklichen Anstoß bei einer Abfrage, weil mir falsche Daten gefiltert werden. Mir ist auch klar, warum ich falsche Ergebnisse bekomme. Ich überlege aber die ganze Zeit krampfhaft, wie ich filtern muss, um das richtige Ergebnis zu bekommen.
Zunächst die Tabellen und ein paar wenige Inhalte (Nur relevante), um die es geht:
Tabelle 1:
Relevante Spalten = name (varchar 255), userid(INT)
Tabelle 2:
Relevante Spalten = bewerter_ID(INT, ag_id(INT)
In dieser Tabelle 2 gibt es bereits folgende Einträge:
bewerter_ID | ag_ID
460 | 477
460 | 471
460 | 476
462 | 476
Was will ich erreichen?
Es sollen alle Namen uns Tabelle 1 augegeben werden, außer die Namen, die bereits vom eingeloggten Benutzer mittels bewerter_id gemäß Tabelle 2 bewertet wurden.
Das ist also das Ziel, was am Ende rauskommen soll.
Mein Ansatz sieht zunächst so aus:
<?php
$abfrage = "SELECT tabelle1.name, tabelle2.bewerter_id FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.userid = tabelle2.ag_id ORDER BY tabelle1.name ASC";
?>
Damit werden mit alle Namen angezeigt. Ich hatte dann versucht, mit einer WHERE Anweisung zu arbeiten: -> WHERE bewerter_id != $userid ($userid enthält die ID des eingeloggten Benutzers).
Nun wird mir zwar Eintrag 4 (462 | 476) nicht mehr angezeigt. Das ist auch richtig. Aber dafür wird logischerweise 460 | 476 angezeigt, denn hier ist bewerter_id ja != $userid. Dieser Eintrag darf aber auch nicht angezeigt werden, da bewerter_ID 462 ja ag_id 476 bereits bewertet hat.
Nun überlege ich bereits seit 2 Tagen, wie ich die Abfrage bestimmen muss. Wahrscheinlich ist es gar nicht so schwer, aber ich komme einfach nicht drauf und muss mit der Nase mal reingedrückt werden.