2016-10-08 9 views
0

このコードを実行しようとしていますが、エラーが発生しています。 アイデアは何故ですか?LIKE条件で2つのmysqlテーブルを結合します。

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

あなたが持っているwhere句...および/または –

答えて

1

は次のように参加:

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

次の2つの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つのWHERE句を持つことができますので
+1

[詳細な正当性](HTTPとの条件の連結方式://stackoverflow.com/questions/1599050/ansi-vs-non-ansi-sql-join-syntax)明示的な 'join'sのです。 –

関連する問題