たとえば、トピックとコメントの2つのテーブルがあります。Join tables - Rails 3の関連0
トピックhas_manyコメント。コメントはトピックに属します。
コメントテーブルには、このコメントを作成するユーザーのIDを保存する列sender_idがあります。
タスク:このユーザーがコメントしていないトピックのidsを選択します(私はuser_idを知っています)。 (私は1つのクエリでそれをやりたい)。
私はそうする。 (2つのクエリ)(私のデータベース - PostgreSQLの)
incorrect_topics = Comment.select(:topic_id).where(:sender_id => user_id).map { |elem| elem.topic_id }
ids = select(:id).where(["id NOT IN (?)", incorrect_topics]).map { |elem| elem.id }
それは正常に動作しますが、私はアプリが大きくなった場合、それは深刻な問題になると仮定します。
ありがとうございました。
私は試しませんでしたが、それは動作する必要があります。しかし、私はそれを照会の照会ではできません。 1つのクエリだけですか?そして私にここで助けてもらえませんか? JOINはもっと速くなりますか? – makrusak
@ rusak1:クエリオプティマイザは、そのような単純なクエリで何をすべきかを知っており、クリスタルクリアであるという利点があります。 –
最後の質問:JOINについてどう思いますか?それは速いですか?データベースは難しいですか? – makrusak