これは私のクエリのように見えますが、その結果は二重になります。私はSQLの初心者です。私のJOINがなぜダブル結果を表示していますか?
SELECT * FROM tbl_projects p, tbl_issues i WHERE p.admin_id = 3
これは私のクエリのように見えますが、その結果は二重になります。私はSQLの初心者です。私のJOINがなぜダブル結果を表示していますか?
SELECT * FROM tbl_projects p, tbl_issues i WHERE p.admin_id = 3
結合条件なしで古いスタイルで結合しているので、デカルト積が得られます。明示的なjoin
構文を使用してください:
SELECT * -- It is recommended to explicitly select the attributes you need
FROM tbl_projects p
JOIN tbl_issues i -- I assumed inner join
ON p.id = i.project_id -- You'll have to figure out the conditions yourself
WHERE p.admin_id = 3
私は 'ON p.admin_id = i.admin_id'と思っています:-) – Alex
@Alexそうは思いません。私は' ON p.id = i.project_id'のようなものを期待しています。ポイントを置くのは分からないので、推測するとどんなポイントが役立つでしょうか。 OP:Pのままにしておいてください(回答はまだ編集済み) – HoneyBadger
これは、クエリのJOINではなく、あなたがテーブル「tbl_issues」を使用していない任意の場所に
これは、ANSI-92構文より前の結合クエリです。 OPは 'tbl_issues'を使用しています。なぜなら、彼は' * ' – HoneyBadger
'DISTINCT'のキーワードで試してみてください。 –
あなたは 'join'条件が必要です。単純なルール:*決して* FROM句でカンマを使用しないでください。 *常に*明示的な 'JOIN'構文を使用します。 –