【发布时间】:2016-12-21 00:44:43
【问题描述】:
我不确定用三个表解决此问题的更好方法。也许有一个我可以使用的功能?
CustID 是主要的主键,我需要加入 Table3 中的销售数据。销售数据应根据 CustID 附加到表中。问题是table3中的销售数据没有CustID信息,只有序列号和销售信息。
如何使用左连接并正确附加我需要的内容?
附加问题:
我不知道何时可以调用数据进行交叉引用。
1.) 我可以在查询的后面引用嵌套 select 语句之外的 numid,即使它是在嵌套 select 语句中编码的?
2.) 即使我没有在 select 语句中提取一列数据,我是否可以在 where 语句中创建 mysql 引用数据? (虽然我在 from 语句中引用了该表)。
3.) 如果我在 from 语句中将 table2 重命名为“tb2”。将来在嵌套的 select 语句中,我还会将 table2 称为“tb2”吗?
感谢您的帮助。
Table1
CustID serialnumber
1 1261
2 6337
3 1412
4 6128
5 1231
Table2
CustID Address Name Joindate
1 xxxx xxx xx/xx/xxx
2 xxxx xxx xx/xx/xxx
3 xxxx xxx xx/xx/xxx
Table3
SerialNumber Purchasedate email Sale
1261 xx/xx/xxxx xx@xx.com $20
1261 xx/xx/xxxx xx@xx.com $30
1261 xx/xx/xxxx xx@xx.com $5.99
1261 xx/xx/xxxx xx@xx.com $5.00
6337 xx/xx/xxxx xx@xx.com $72
1412 xx/xx/xxxx xx@xx.com $5.00
1412 xx/xx/xxxx xx@xx.com $5.00
1412 xx/xx/xxxx xx@xx.com $5.00
6128 xx/xx/xxxx xx@xx.com $5.00
1231 xx/xx/xxxx xx@xx.com $5.00
1261 xx/xx/xxxx xx@xx.com $5.00
select * from Table2
left join
(select
Table1.serialnumber as "num",
Table1.CustID as "numid",
Table3.purchasedate,
Table3.email,
sum(Table3.Sale)
from
Table3, Table1
where Purchasedate between
date(xx/xx/xxxx) and date(xx/xx/xxxx)
and Table3.SerialNumber = num)) tblxxx on CustID using numid)
where joindate between date(xx/xx/xxxx) and date(xx/xx/xxxx);
我的预期结果如下:
CustID Address Name Joindate num numid purchasedate email Sale
1 xxxx xxx xx/xx/xx 1261 1 xx/xx/xx x@x.com $390
2 xxxx xxx xx/xx/xx 6337 2 xx/xx/xx x@x.com $72
3 xxxx xxx xx/xx/xx 1412 3 xx/xx/xx x@x.com $15
【问题讨论】:
-
您的预期结果是什么样的?
-
'date(xx/xx/xxxx)' 有什么作用?
-
此外,您应该在每个帖子中只问 1 个问题。您问了 3 个问题并希望为您的问题找到解决方案,因此我只了解您的 2 个问题和您的问题,其他人将不得不回答剩下的问题。
-
用 exes 填充样本数据并不能帮助清晰。这很反常,不是吗?