我有一个包含以下架构的数据库:
fund(fundID, fundName,totalShares)
price(fundID,priceDate,price)
trans(sin,fundID,transDate,shares)
customer(sin,name,address,phone)
rep(repid,repName)
customerRep(sin,repId)
我的任务是找到每天交易后持有特定基金("能源")股票的独特客户。我不完全确定trans代表什么,即购买或购买的股票。我正在寻找提示而不是答案,如果可以,请使用示例代码,谢谢!
答案 0 :(得分: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'
编辑:
从您的回复中,交易表(反式)可以包含同一日期的大量记录,用于购买/出售该基金的相同fundID。
在这种情况下,您需要对这些进行总结。子查询可以做到这一点。我相信以下内容可以为您提供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
答案 1 :(得分:0)
交易可以是很多东西。购买,销售,公司活动,应计收入,承担,起飞。
看起来您需要查看表trans
才能开始。
我不认为这是正确的网站,了解什么交易(除非你在说数据库),但编程方面可以帮助