0

私はこれがうまくいくはずだと知っています、私は何百回も前にそれをしました、しかしどういうわけか今夜(またはあなたがどこにいるかによっては朝)それはそれがするはずのことをしていません。

複数のテーブルをクエリしようとしていますが、いくつかの問題が発生したため、クエリを最大に減らしました。

SELECT tasks.* FROM tasks, assigned WHERE tasks.id = 1 //not working
SELECT * FROM tasks WHERE id = 1 //working  

私はそれらを引用しようとしましたが、成功しませんでした。さて、最初のステートメントの何が問題になっていますか?

4

1 に答える 1

1

暗黙の結合構文を使用しています。それで、あなたはあなたが欠けているそれらのテーブルを結合するために何らかの方法で必要です:

SELECT tasks.*
FROM tasks, assigned
WHERE tasks.id = assigned.task # <-- missing this
    AND tasks.id = 1

JOIN明示的な構文(ANSI標準)の使用を練習する必要があります。

SELECT tasks.col1
FROM tasks
JOIN assigned ON assigned.task = tasks.id
WHERE tasks.id = 1

から何も選択していない場合assigned、なぜその結果セットをフェッチするのですか?

また、を使用するのではなく、列リストを使用する必要がありますSELECT *

アップデート

にレコードがあるがtasksそのassigned時点ではない場合は、にレコードがない場合でもLEFT JOINレコードを返すを使用できます。tasksassigned

SELECT tasks.col1
FROM tasks
LEFT JOIN assigned ON assigned.task = tasks.id
WHERE tasks.id = 1
于 2012-10-25T18:22:40.857 に答える