1

次のスキーマを持つデータベースがあります。

fund(fundID, fundName,totalShares) 
price(fundID,priceDate,price) 
trans(sin,fundID,transDate,shares) 
customer(sin,name,address,phone)
rep(repid,repName) 
customerRep(sin,repId)

私の仕事は、毎日の取引後に特定のファンド (「エネルギー」) の株式を保有しているユニークな顧客を見つけることです。トランスが何を表しているのか正確にはわかりません。つまり、購入した株または購入した株です。答えではなくヒントを探しています。できればサンプル コードを使用してください。

4

2 に答える 2

1

これを試して

SELECT c.sin, c.name
FROM customer c 
INNER JOIN trans t ON t.sin = c.sin 
WHERE t.funcID = XXXX 
AND t.transDate = '2012-10-19' 

テキストマッチングが必要な場合、つまり「エネルギー」

SELECT c.sin, c.name
FROM customer c 
INNER JOIN trans t ON t.sin = c.sin 
INNER JOIN fund f ON f.fundID = t.fundID
WHERE f.fundName = 'Energy' 
AND t.transDate = '2012-10-19' 

編集:

あなたの返信から、トランザクション テーブル (trans) には、そのファンドの売買となる同じファンド ID の同じ日付の多数のレコードが含まれている可能性があります。

その場合、それらを合計する必要があります。サブクエリはそれを行うことができます。以下は、sin、fundID、transDate、およびremaining_sharesの一意の数を提供できると思います。このようにして、すべてのトランザクションをトリミングし、ポジティブなトランザクションのみを保持して、それを顧客と結合できます。

SELECT t.sin, t.fundID, t.transDate, SUM(t.shares) AS remaining_shares 
FROM trans t 
WHERE SUM(shares) > 0 
GROUP BY t.sin, t.fundID

HTH

于 2012-10-19T04:01:53.663 に答える
0

トランザクションにはさまざまなものがあります。購入、販売、企業イベント、未収所得、引き取り、引き取り。

ただし、最初にテーブルを調べる必要があるようですtrans

トランザクション (データベースについて話している場合を除きます) とは何かを学ぶのにこれが正しいサイトだとは思いませんが、プログラミング側は助けることができます

于 2012-10-19T04:02:11.997 に答える