Ich bin immer noch versucht, den Hang von SQL zu bekommen. Ich baute 1 Abfrage, die thread_id's aus einem filter_thread (enthält 'filter_id' und 'thread_id' Spalten) Tabelle und einen Filter ('filter_id und' tag ') Tabelle'Verwendung von INNER JOIN zweimal in der gleichen Abfrage
Dann verwende ich eine völlig andere Abfrage zu finden der Thread-Tabelleninhalt, der die 'thread_id' enthält
Ich weiß, dies ist nicht der beste Weg, es zu tun, kann aber keine erfolgreiche Abfrage erhalten. Würde jemand helfen können?
$query = "SELECT ft0.thread_id
FROM filter f0
INNER JOIN filter_thread ft0 ON ft0.filter_id = f0.filter_id
WHERE f0.tag LIKE '%filter1%'
OR f0.tag LIKE '%filter2%'"
$result = $query->result_array();
$thread = array();
foreach ($result as $thread_id)
{
$id = $thread_id['thread_id'];
$query = $this->db->query("SELECT * FROM thread WHERE thread_id='$id'");
$thisRow = $query->result_array();
array_push($thread, $thisRow[0]);
}
DANKE!
gut funktioniert.. Vielen Dank. Das einzige Problem ist, dass einige der Ergebnisse doppelt vorhanden sind. Ich nehme an, es passiert, wenn sie eine doppelte Phrase teilen, die in filter1 und filter2 gefunden wurde. Irgendeine Idee, warum das passieren könnte? –
Nein, wenn Sie denken, dass das nicht passieren sollte, liegt es entweder daran, dass mehrere Datensätze in der 'filter_thread'-Tabelle mit der gleichen' thread_id' vorhanden sind, oder mehrere Datensätze in der 'filter'-Tabelle mit derselben' filter_id'. Wenn diese doppelten Datensätze erwartet werden, aber Sie nicht in der Ergebnismenge möchten, können Sie ein 'DISTINCT'-Schlüsselwort hinzufügen, um die Duplizierung zu eliminieren (' SELECT DISTINCT t. * ... ') – gonsalu
danke. Sie sind erwartet und notwendig für das, was ich versuche zu tun. DISTINCT hat perfekt funktioniert. liebe neue Dinge zu lernen. –