この(一種の)作業クエリをより動的にする助けが必要です。
myShows、TVShows、Users の 3 つのテーブルがあります。
- マイショー
- ID(PK)
- ユーザー (ユーザーへの FK)
- 番組 (FK から TVShows)
このクエリを取得して、ユーザー ID を送信して残りを実行できるストアド プロシージャに変更したいと思います...
SELECT showId, name, Count(1) AS no_users
FROM
myShows LEFT OUTER JOIN
tvshows ON myShows.Show = tvshows.ShowId
WHERE
[user] IN (
SELECT [user]
FROM
myShows
WHERE
show ='1' or show='4'
)
AND
show <> '1' and show <> '4'
GROUP BY
showId, name
ORDER BY
no_users DESC
これは現在機能しています。しかし、ご覧のとおり、問題は WHERE ( show ='1' または show='4' ) および AND ( show <> '1' および show <> '4' ) ステートメント内にあり、現在は値がハードコーディングされています。 、そしてそれが私が動的にする必要があるものです。ユーザーが3つまたは30のショーをチェックする必要があるかどうかわからないからです。
また、このプロセスはどれほど非効率的ですか? これは、多くのユーザーを獲得する可能性のある iPad アプリケーションに使用されます。私は現在、1 時間あたり約 130,000 ヒットを取得するムービー API (IMDbAPI.com) を実行しており、高速に実行するために多くのデータベース/コードの最適化を行う必要がありました。再度、感謝します!
テスト用のデータベース スキーマが必要な場合は、お知らせください。