3

データベース内で販売された製品の最大価格を選択しようとしています。3 つのテーブル ( tbl_CarForSaletbl_Commisionおよびtbl_Salesman) があります。

私がやりたいことは、販売された車の最大価格を選択し、その記録を使用して、獲得した手数料を計算し、それをセールスマンにリンクできるようにすることです。私は次のものを持っており、車の最大価格を返しますが、返されたレコードを直接使用して他の情報を取得する方法がわかりません。

SELECT Max(tbl_CarForSale.carprice)
FROM (SELECT tbl_CarForSale.*, tbl_Salesman.*,  from tbl_CarForSale, 
WHERE bolSold = true)

これを別のSELECTステートメントに入れてネストする必要があると思いますが、これを行う方法がわかりません。

編集:

要求に応じて、フィールド名はここにあります。

tbl_salesman: name
tbl_CarForSale: registration, soldDatem salesmanNo, carPrice, bolSold
tbl_Commision: minValue, maxValue, comAvliable

基本的に、Commission テーブルの背後にある考え方は、セールスマンが車の価格に基づいてコミッションを得るというものです。そのため、車の価格を見て、セールスマンが稼いだコミッションを返すクエリがあります。

4

2 に答える 2

3

このようなものがうまくいくはずです。

select your fields
from your tables
where bolSold = true
and tbl_CarForSale.carprice = (select max(carprice) from tbl_carForSale)
于 2013-03-19T12:51:34.227 に答える
0

tbl_salesmansalesmanNoテーブルが結合するための同様の属性を持つように、属性も持つ必要があります。これは他のテーブルにも当てはまります。

bolSoldは何をしますか?

私が正しく理解していればtbl_Commision、テーブルとしては意味がありませんが、関数であるか、いくつかの特別なクエリを使用してアプリケーションレベルで処理されます。

salesmanNoこれは、がに含まれている場合、各セールスマンが販売する車の最大価格を示す必要がありtbl_salesmanます。

SELECT salesman.name, MAX(tbl_CarForSale.carprice) FROM tbl_salesman JOIN tbl_CarsForSale GROUP BY salesman.name ORDER BY MAX(tbl_CarForSale.carprice);

その最後に句を追加して、WHEREより大きい制約とより小さい制約を指定するか、関数を作成して、MAX()上記の例の関数を新しく作成した関数に置き換えることができます。

少し正規化することも理にかなっているかもしれません。正確な要件はわかりませんが、次のように検討します。

car: registration, carPrice, bolSold
salesman: salesmanNo, name
sold_record: date, salesmanNo, registration REFERENCES car.registration,salesmanNo REFERENCES salesman.salesmanNo
于 2013-03-19T12:59:19.597 に答える