質問

私は賃料テーブルが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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top