2016-10-08 2 views
0

Я пытаюсь запустить этот код, но я получаю ошибки. Любые идеи, почему?Соедините две таблицы mysql с условием LIKE.

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

вы должны где положение .. Concat условий с и/или –

ответ

1

Так как вы только можете иметь один WHERE пункт вы можете использовать внутреннее соединение, как это:

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

Должно быть одно условие WHERE.

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'; 

Запрос будет выглядеть выше для И между вашими LIKE условий.

Вы также можете рассмотреть возможность использования JOIN, вот так.

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

У вас есть два WHERE положения, но одного SELECT допускает только один. Но, это было бы легко быть фиксированной, если вы использовали правильную, явный JOIN синтаксис:

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'; 

Примечание:

  • Всегда использовать собственно явное JOIN синтаксиса. Никогда запятыми в разделе FROM.
  • Табличные псевдонимы облегчают запись и чтение.
  • Я уверен, что в ваших WHERE условиях отсутствуют скобки для вашей предполагаемой логики.
  • Если user_id - это номер любого типа, то не используйте одинарные кавычки вокруг «7». Это может смутить как компилятора, так и людей.
+1

[далее обоснованием] (HTTP : //stackoverflow.com/questions/1599050/ansi-vs-non-ansi-sql-join-syntax) явного 'join'. –

Смежные вопросы