ここに問題があります。私は異なるテーブルを持つデータベースを作成しました。私は108映画を持つ "映画"という名前のテーブルがあります。この表には、 「movie_id」(レビューされた映画のIDへのmovie_idへのリンク)、 「review_score」(1から0)の列を含む「レビュー」という名前のテーブル 「id、name、director、year、country」、 テーブル 「レビュー(レビューテキストあり)」 「批評家テーブルの批評家にリンクする」 「批評家」という名前の表は、 「批評家名」と「critics_id」というicludesという名前のテーブルです。 問題は、100本以上の映画がありますが、それらのうち10本だけがレビューされ、レビューされた映画のみをリストアップする必要がありますが、レビューと映画は異なるテーブルにあります。私は単純なコマンドを試してみると、名前を確認し、映画を見直して、レビュー - 私は映画を繰り返すことで巨大なリストを取得する(写真を参照)my table レビューされた映画だけをリストすることができ、 1回だけ? ありがとうございます!レビューされた映画だけをリストする方法は?
0
A
答えて
-1
ここで、結合を使用します。ムービーテーブルから選択してレビューテーブルに参加し、レビューに参加したムービーでフィルタします。例えば
:あなたはまた、別のは、あなたの批評家のテーブルに参加追加することができ
SELECT movie.*, review.review_score, review.review
FROM movie
LEFT JOIN reviews AS review
ON review.movie_id = movie.movie_id -- assuming this column name is correct...
WHERE review.movie_id IS NOT NULL
:
SELECT movie.*, review.review_score, review.review, critic.critics_name
FROM ....
LEFT JOIN critics AS critic
ON critic.critics_id = review.critics_id
WHERE critic.critics_id IS NOT NULL
は、この例は、その中で、作品に参加する方法を強調するためにleft joinを使用していることに注意してください一致するものが見つからない場合、結合された結果はnullになります。
代わりにinner joinを使用した場合、on
句に一致しない結果が得られないため、WHERE id IS NOT NULL
部分はまったく必要ありません。私は純粋に単数形の名前に複数のテーブル名をエイリアスするAS
を使用している - また
SELECT movie.*, review.review_score, review.review, critic.critics_name
FROM movie
INNER JOIN reviews AS review
ON review.movie_id = movie.id
INNER JOIN critics AS critic
ON critic.critics_id = review.critics_id
:
アンインナーは、上記検討されている映画だけでなく、評論家の名前を返すの例に参加しました意味論的な理由から。 AS
エイリアスがない場合は、reviews
とcritics
を引き続き使用できます。
-2
クエリ以下の希望は、次のことに役立ちます。
明確な映画のSELECT
m.name,
c.critics_name,
r.review_score,
r.review_text
FROM movies m
JOIN reviews r ON r.movie_id = m.id
JOIN critics c ON c.critics_id = r.critics_id
は、以下のようにクエリを変更します
SELECT DISTINCT m.name
FROM movies m
JOIN reviews r ON r.movie_id = m.id
JOIN critics c ON c.critics_id = r.critics_id
関連する問題
- 1. フィルタリングされたリストの変更を反映する方法
- 2. iTunesのポッドキャストで映画のリストを取得する方法
- 3. バッファリングされた画像の部分だけを描画する
- 4. C#は反映されたタイプのリストをインスタンス化します
- 5. Visual Studio 2008 - 反映されたコードをステップインする方法(F11)
- 6. ネストされたループを1つだけ中断する方法
- 7. Gerritの変更は、結合されたレビューと出てくるレビューの両方に表示されます
- 8. D3:マージされた線を1つだけ描画する
- 9. 映画リストのためのPythonを使ったTwitterのスクラップ
- 10. このSQLクエリを最適化する方法は? (映画データベース)
- 11. ログイン画面を一度だけ表示する方法は?
- 12. アップロードされた画像をモデルに関連付ける方法
- 13. 俳優または監督による映画のリストを取得するAPI?
- 14. Dockerプッシュで変更されたものだけをプッシュする方法は?
- 15. git noob:更新されたファイルだけをターゲットディレクトリにコピーする方法は?
- 16. スターキャストの情報を持つ各映画とリリース収益の日付を持つimdbpyを使って、すべてのボリウッド映画のリストを作る方法は?
- 17. 画像の右または左の部分だけを回転する方法
- 18. リストの前に画像を見つける方法は?
- 19. リスト内で定義されたボタンを見つける方法は?
- 20. Neo4jは映画10本しか見つけられません
- 21. R Markdown:挿入された画像の隣にリストを入れる方法
- 22. リストのPythonで二重だけを見つけて残す方法は?
- 23. Android:カスタムクラスがクリックされたときだけ聞く方法
- 24. 他のリストから1つだけリストを削除する方法
- 25. RESTfulな方法で順序付けされたリストを処理する
- 26. ファイル名から映画タイトルを抽出する方法
- 27. iPhone SDKで画像を1つだけドラッグする方法
- 28. React native - ログイン画面を一度だけ表示する方法
- 29. メンバーだけがマゼンタでレビューを投稿できます
- 30. 継承に使用された汎用パラメータを反映する方法
大変ありがとう。あなたが私に与えたコードを SELECT movie。*、reviews.review_score、reviews.reviewに変更しました FROMムービー LEFT JOINレビューAS ON reviews.movie_id = movie.id WHERE reviews.movie_idはNULLではありません。 と動作します! – Olli