Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接两个mysql表并按日期显示数据顺序_Mysql_Sql_Select_Join - Fatal编程技术网

连接两个mysql表并按日期显示数据顺序

连接两个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

我有两个mysql表tblSharesRegistry,tblSharesAccount。我想联接这两个表并按日期顺序显示行。但它显示的数据不正确。请帮忙

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中,它自动将()添加到该代码中。我移除了它,现在它可以工作了。非常感谢萨哈什的热情回应。