以下のような図書館での貸出状況の履歴を管理しているテーブルがあります。
このテーブルを使って以下の情報を取得したいです。
「ノルウェーの森と1Q84を借りたことがある人が誰か」
現在行っている操作手順:
①ノルウェーの森を借りた履歴を抽出する
SELECT * FROM library_history WHERE on_loan = 'ノルウェーの森';
クエリ実行結果
②抽出結果から1Q84を借りたことがある人物を特定する
SELECT * FROM library_history WHERE name IN('川野美香','田中太郎','武藤武夫','鈴木里佳子') AND on_loan = '1Q84';
実行結果:
この2つの手順を1つのクエリで実行できないでしょうか?
例に出したのは9件ほどですが、これが数十万件となると確認をするのに時間がかかってしまいます。
このデータベースを検索する前から誰がノルウェーの森を借りたことがあるかは特定できないためon_loanが検索の鍵となります。
内部結合(INNER JOIN)や相関問い合わせ(EXISTS)を使えばできそうと思い試しているのですが期待通りの結果が得られません。効率よく検索ができることがベストですが、調査用のクエリのため、性能は求めておりません。
データベースが得意な方、SQL文に強い方がいましたらご回答いただけないでしょうか?
ちなみにDBはMySQLです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/07 15:11