私は古くなっていますが、私が書く必要があるクエリはますます複雑になっています。次のクエリでは、ユーザーに関連付けられたすべてのtasks
が取得されます。2つのSELECTクエリをマージする
"SELECT `date`
FROM `tasks`
WHERE `user_id`= 1;"
tasks
表である(id
、date
、user_id
、url_id
)。
"SELECT `t1`.`data`
FROM `tasks` `t1`
JOIN `urls` `u1` ON `u1`.`id` = `t1`.`url_id`
WHERE `u1`.user_id` = 1;"
ものの、マージすることが可能です:
さて、私も取得する必要がありますが、ユーザーとのurl_id
仲間が
`urls` table (`id`, `user_id`)
トラフスタンドアロンのクエリは次のようになりますことを記録しますこれらの2つのクエリは1つのクエリに入りますか?私のロジックは、実際のJOINをどうやって行うのかわかりませんが、そうすべきだと言います。
最後のクエリで 'data'または' date'を意味しましたか?また、URLテーブルからデータを選択していない場合は、実際に参加する必要がありますか? (その答えは "はい、そのユーザーIDのURLエントリがあることを確認する"ことができます。)そしてなぜそんなに多くのバックティック;それはMS SQL Serverと角括弧のように悪いです! –
途中で質問を書いたので、間違いがほとんどありませんでした。あなたは正しいですが、それは「データ」ではなく「日付」でなければなりませんでした。私は通常、あなたが非常に高い評判を持っていますが、「back-ticks」についての発言を無視していたので、「MS SQL Serverと角かっこのように悪い」と言っているのかなんて不思議です。バッククッキーの目的は、MySQLサーバがテーブルとカラムの名前を素早く識別できるようにすること、ネストされたセットで 'left'や' right'のような予約されたキーワードを使うときの混乱を避けることです。 – Gajus
MS SQL Serverユーザーが角括弧を使用するのと同じ主張がなされています。それは私には醜いとそれは完全に非標準です。他のDBMSは、標準が「二重引用符で囲まれている」と言われる「区切られた識別子」をSQL標準が呼び出すものに対して、バックティックまたは大括弧をサポートしていません。単一引用符は文字列用に予約されています。異なるDBMSには、キーワードを使用できる場所に関するさまざまなルールがあります。私が使っているものは、多くの場所でキーワードを識別子として使用できます。識別子としてのキーワードを避けることによって引用符を避けるのが最善です。 –