Ich versuche, eine MySQLi-Anweisung zu schreiben, wo ich eine zufällige Spalte (url
) aus einer Tabelle namens (questions
) abrufen möchte. Ich möchte jedoch nicht irgendeine zufällige url
. Diese Anweisung hängt von drei Bedingungen ab, die eine andere Tabelle mit sich führen: tracking
. tracking
enthält drei Spalten (user_id
, q_id
, answer
). Letztendlich möchte ich alle urls
abrufen, die vom Benutzer noch nicht beantwortet wurden. Zum Beispiel, wenn der Benutzer eine Frage bereits beantwortet hat, dann tracking
wird etwas wie dieses haben: user_id: 2
q_id: 2
answer: 1
Jetzt, wenn wir diese Aussage ausführen, sollte q_id: 2
nicht eine der zufälligen sein urls
. Es ist auch wichtig darauf hinzuweisen, dass q_id
auch ein Primärschlüssel von questions
ist.Left Join funktioniert nicht zum Abrufen zufälliger Spalte
Ich habe diese Aussage versucht, aber es aus irgendeinem Grunde nicht funktioniert:
$values = $db->query("
SELECT url
FROM questions
LEFT
JOIN tracking
ON tracking.user_id = '$id'
AND questions.q_id != tracking.q_id
AND tracking.answer != NULL
ORDER
BY rand() LIMIT 1
");
Wie kann ich es so machen, ein zufälliges url
mit Ausnahme der Fragen abgerufen wird, die bereits vom Benutzer beantwortet wurde?
Hmm, ich erhalte eine Fehlermeldung, die besagt: 'Aufruf einer Memberfunktion fetch_array() auf einem Nicht-Objekt' Nach der Abfrage tue ich:' $ rows = $ values-> fetch_array(); ' – user2896120
Testen Sie die Abfrage direkt in Ihrer db-Umgebung (wenn möglich) oder unter mindestens der mysql Fehler. echo mysql_errno ($ db). ":" mysql_error ($ db). "\ n"; –
Hmm, es funktioniert jetzt, aber die Abfrage gibt immer noch eine URL, die aus irgendeinem Grund bereits beantwortet wurde ... – user2896120