2016-10-08 3 views
0

Ich versuche, diesen Code auszuführen, aber ich bekomme Fehler. Irgendwelche Ideen warum?Verbinden Sie zwei mysql-Tabellen mit LIKE-Bedingung.

SELECT notes.project_id, notes.title, notes.description 
FROM notes, project_members 
WHERE notes.title LIKE '%second%' OR notes.description LIKE '%second%' 
WHERE notes.project_id = project_members.project_id AND project_members.user_id = '7' 
+0

Sie Klauseln müssen, wo .. Concat die Bedingungen mit und/oder –

Antwort

1

Da Sie nur eine WHERE Klausel haben, können Sie eine innere Verknüpfung wie diese verwenden:

SELECT notes.project_id, notes.title, notes.description 
    FROM project_members pm 
INNER JOIN notes ON notes.project_id = pm.project_id AND pm.user_id = 7 
    WHERE notes.title LIKE '%second%' OR notes.description LIKE '%second%' 
0

Es sollte einzigen WHERE Klausel sein.

SELECT notes.project_id, notes.title, notes.description 
FROM notes, project_members 
WHERE 
(notes.title LIKE '%second%' OR notes.description LIKE '%second%') 
AND notes.project_id = project_members.project_id AND project_members.user_id = '7'; 

Abfrage würde etwas oben zu schauen und zwischen LIKE Bedingungen.

Sie können auch in Betracht ziehen, JOIN, so zu verwenden.

SELECT notes.project_id, notes.title, notes.description 
FROM notes 
JOIN project_members 
ON notes.project_id=project_members.project_id 
WHERE 
    (notes.title LIKE '%second%' OR notes.description LIKE '%second%') 
AND project_members.user_id = '7'; 
0

Sie haben zwei WHERE Klauseln, aber einzelne SELECT erlaubt nur eine. Aber dies würde leicht festgelegt werden, wenn Sie die richtige, explizite JOIN Syntax verwendet:

SELECT n.project_id, n.title, n.description 
FROM notes n JOIN 
    project_members p 
    ON n.project_id = p.project_id 
WHERE (n.title LIKE '%second%' OR n.description LIKE '%second%') AND 
     p.user_id = '7'; 

Hinweis:

  • immer Verwendung richtige explizite JOIN Syntax. Nie Verwenden Sie Kommas in der FROM Klausel.
  • Tabellenaliasnamen erleichtern das Schreiben und Lesen der Abfrage.
  • Ich bin ziemlich sicher Ihre WHERE Bedingungen fehlen Klammern, für Ihre beabsichtigte Logik.
  • Wenn user_id eine beliebige Zahl ist, dann verwenden Sie keine einfachen Anführungszeichen um "7". Dies kann sowohl den Compiler als auch die Leute verwirren.
+1

[Weitere Rechtfertigung] (http : //stackoverflow.com/questions/1599050/ansi-vs-non-ansi-sql-join-syntax) von expliziten 'Joins'. –

Verwandte Themen