连接两个mysql表并按日期显示数据顺序
我有两个mysql表tblSharesRegistry,tblSharesAccount。我想联接这两个表并按日期顺序显示行。但它显示的数据不正确。请帮忙连接两个mysql表并按日期显示数据顺序,mysql,sql,select,join,Mysql,Sql,Select,Join,我有两个mysql表tblSharesRegistry,tblSharesAccount。我想联接这两个表并按日期顺序显示行。但它显示的数据不正确。请帮忙 1. tblSharesRegistry ID EMPNumber NoOfShares Amount Deposit Date 1 1111 100 10000 1 2012-07-20 2 1234 50
1. tblSharesRegistry
ID EMPNumber NoOfShares Amount Deposit Date
1 1111 100 10000 1 2012-07-20
2 1234 50 5000 1 2012-08-12
3 1001 10 1000 1 2012-09-25
4 1001 10 1000 1 2012-10-25
5 1001 10 1000 1 2012-11-25
6 1001 -5 -500 0 2012-11-28
2. tblSharesAccount
ID EMPNumber Balance Interest Rate Date
1 1111 10000 1000 10 2012-11-29
2 1234 5000 500 10 2012-11-29
3 1001 2500 250 10 2012-11-29
并且输出应该是EMP编号:1001
Date Description #Shares Amount Interest Total
2012-09-25 Shares bought 10 1000 - 1000
2012-10-25 Shares bought 10 1000 - 2000
2012-11-25 Shares bought 10 1000 - 3000
2012-11-28 Shares sold -5 -500 - 2500
2012-01-29 Interest 25 2500 250 2750
我当前用于连接两个表的代码
SELECT tblSharesRegistry.Date, tblSharesRegistry.NoOfShares, tblSharesRegistry.Amount, tblSharesAccount.Interest, tblSharesAccount.Date FROM tblSharesAccount INNER JOIN tblSharesRegistry ON tblSharesAccount.EMPNumber = tblSharesRegistry.EMPNumber WHERE tblSharesRegistry.EMPNumber = '1001' ORDER BY Date DESC
VB.NET错误:
试试这个:
SELECT
tblSharesRegistry.Date,
tblSharesRegistry.NoOfShares,
tblSharesRegistry.Amount,
tblSharesAccount.Interest,
tblSharesAccount.Date
FROM tblSharesAccount
INNER JOIN tblSharesRegistry ON tblSharesAccount.EMPNumber = tblSharesRegistry.EMPNumber
WHERE tblSharesRegistry.EMPNumber = '1001' ORDER BY tblSharesRegistry.Date DESC
试试这个:
SELECT * FROM
(SELECT sr.Date, IF(sr.NoOfShares > 0, 'Shares bought', 'Shares sold') Description,
sr.NoOfShares, sr.Amount, '-' Interest, sr.Amount Total
FROM tblSharesRegistry sr WHERE sr.EMPNumber = '1001'
UNION
SELECT sa.Date, 'Interest' Description, (SELECT SUM(sr.NoOfShares) FROM tblSharesRegistry sr WHERE sa.EMPNumber = se.EMPNumber) NoOfShares,
sa.Balance, sa.Interest, (sa.Balance + sa.Interest) Total
FROM tblSharesAccount sa WHERE sa.EMPNumber = '1001' ) AS A
ORDER BY A.date
查看此链接,了解有关if-else语句的更好信息是否希望该查询返回您添加的有问题的输出?它工作得非常好。顺便说一句,如何在sql语句和多个select查询中使用if、else。有什么好的学习网站吗?再次感谢您的帮助。当您更改我的查询时,我已经在查询中使用了if-else。如果(sr.NoOfShares>0,'买入股份','卖出股份'),请检查此声明。在这个语句中,第一个参数是我的条件,第二个参数是true,第三个参数是else部分。这个sql语句在phpmyadmin和php代码中工作得非常好。但当我在VB.NET2010中使用相同的代码时,它显示了一个错误。有什么建议吗?我找到了。这是一个打字错误。我只是复制并粘贴了php文件中的代码。在VB.NET中,它自动将()添加到该代码中。我移除了它,现在它可以工作了。非常感谢萨哈什的热情回应。