2016-06-28 6 views
1

Ich versuche, eine Suche mit der folgenden Abfrage auszuführen:durch verknüpften Tabellen Suche zeigt nur Streichhölzer Daten aus einer Tabelle

 SELECT 
      * 
     FROM 
      question_index 
     JOIN 
      question_content 
      ON question_index.id = question_content.question_id 
     WHERE 
      question_index.remove = '0' AND 
      question_index.active = '1' AND   
      question_index.publish_date <= '$current_time' AND 
      (
       question_index.question LIKE '%$keyword%' OR 
       question_content.text LIKE '%$keyword%' 
      ) 
     GROUP BY 
      question_index.id 
     ORDER BY 
      question_index.publish_date DESC 

Was will ich tun für die Suche durch die beiden Tabellen und Anzeige laufen Ergebnisse, die entweder "question_index.question" oder "question_content.text" entsprechen

Aber im Moment werden nur die Ergebnisse angezeigt, die mit "question_content.text" übereinstimmen. Ich habe versucht, "question_content.text LIKE '% $ keyword%' zu entfernen, aber es werden überhaupt keine Ergebnisse angezeigt. Die einzige Möglichkeit, Ergebnisse zu erhalten, die mit "question_index.question" übereinstimmen, ist, wenn ich den Join alle zusammen entferne. Aber das ist nicht das Ergebnis, das ich will.

+1

Da Sie nur 'Join' haben, machen Sie standardmäßig einen' inneren' Join, was bedeutet, dass Sie Ergebnisse erhalten, wenn Datensätze auf BEIDE Seiten des Joins existieren. Wenn Sie alle Datensätze von einer Seite haben möchten, auch wenn auf der anderen Seite keine Übereinstimmungen vorhanden sind, müssen Sie einen 'linken Join' oder' rechten Join' verwenden. –

+0

Linke Verbindung funktioniert! Bitte senden Sie es als Antwort und ich werde es akzeptieren, thx! –

Antwort

0
SELECT 
     * 
    FROM 
     question_index LEFT 
    JOIN 
     question_content 
     ON question_index.id = question_content.question_id 
    WHERE 
     question_index.remove = '0' AND 
     question_index.active = '1' AND   
     question_index.publish_date <= '$current_time' AND 
     (
      question_index.question LIKE '%$keyword%' OR 
      question_content.text LIKE '%$keyword%' 
     ) 
    GROUP BY 
     question_index.id 
    ORDER BY 
     question_index.publish_date DESC 
+0

Union alle funktionieren auch, aber aktualisiert, um Linke beizutreten, weil vom Leistungspunkt ist es besser als Union –