SQLで複数のデータベースからSELECT COUNT()
質問
私は賃料テーブルが2列、顧客ID用と映画のIDのための1つを含む特定の映画を、借りてきた特定の状態にある顧客の数を返すようにしようとしています。関数は、映画のIDと状態を取り込み、顧客の量と整数を返します。
今、私は実装を持っているが、それは全体のクエリが返す行数をカウントアップます:
SELECT COUNT(*) as numCustomers FROM CUSTOMER C, RENTS R WHERE C.ST = '" + state + "' AND R.mid = " + movieID
そして私は、行の量をカウントします。私は、正しいデータのnumCustomersをチェックできるようにしたいと思います。ありがとう!
解決
まず、あなたはあなたの賃貸料のテーブルとのCustomerIdの顧客テーブルをリンクする条項を欠いているか。
第二に、あなたは2つのテーブルを追加するためにFROM句での機能のJOIN INNERを使用する必要があります。
あなたはSQLインジェクションに開放されるよう第三に、あなたはこのような文字列としてあなたのSQLを構築しないようにしてくださいます。
次のようにの推測では、あなたが後かもしれSQLのソートはあります。
DECLARE @movieId int
DECLARE @state varchar(2)
SET @movieId = 12345
SET @state = 'NY'
SELECT
COUNT(DISTINCT C.CustomerID) as numCustomers
FROM
CUSTOMER C
INNER JOIN
RENTS R
ON
C.CustomerID = R.CustomerId
WHERE
C.ST = @state
AND
R.mid = @movieId
他のヒント
(賃料が顧客にどのように関連するか)スキーマについて何かを推測ます:
SELECT COUNT(*) as numCustomers
FROM CUSTOMER c
WHERE
c.ST = @State
AND EXISTS
(
SELECT *
FROM RENTS r
WHERE r.CustomerID = c.CustomerID
AND r.mid = @movieID
)
あなたはすでにその対象に慣れていない場合にも、あなたは、SQLインジェクション攻撃を研究する必要があります。
あなたは、そうでない場合は、各テーブル内のすべてのエントリのエントリを得るでしょう、あなたの顧客やレンタルのテーブルを接続する必要があります。
どの程度:
SELECT COUNT(C.ID) AS numCustomers
FROM CUSTOMER C, RENTS R
WHERE
C.ID = R.RenterID
AND
C.ST = '" + state + "'
AND
R.mid = " + movieID
所属していません StackOverflow