MySql 选择资格到期日期
我有三个 MySql 表:
Users:UserId、UserName
Tests:TestId、TestName
Passes:PassId、UserId、TestId、DateTaken
我想返回一个表格,显示每个用户通过的最新测试的日期,例如,
|--------|---------|---------|---------|---------|---------|
|User |Test A |Test B |Test C |Test D |Test E |
|--------|---------|---------|---------|---------|---------|
|James |Null |6/3/11 |Null |Null |4/3/11 |
|Mark |Null |1/4/11 |8/5/11 |23/5/10 |Null |
|--------|---------|---------|---------|---------|---------|
在此示例中,James 从未通过测试 A、C 或 D。他可能已多次参加测试 B,但最近一次是在 2011 年 6 月 3 日。
我计划在 ASP.NET GridView 中显示此数据。最好的方法是什么 - 可以在 SELECT 语句中完成吗?请帮忙!
非常感谢。
I have three MySql tables:
Users: UserId, UserName
Tests: TestId, TestName
Passes: PassId, UserId, TestId, DateTaken
I would like to return a table showing dates of the LATEST tests passed by each user, e.g.
|--------|---------|---------|---------|---------|---------|
|User |Test A |Test B |Test C |Test D |Test E |
|--------|---------|---------|---------|---------|---------|
|James |Null |6/3/11 |Null |Null |4/3/11 |
|Mark |Null |1/4/11 |8/5/11 |23/5/10 |Null |
|--------|---------|---------|---------|---------|---------|
In this example, James has never passed Tests A, C or D. He may have taken Test B several times, but the latest was on 6/3/11.
I plan to display this data in an ASP.NET GridView. What is the best method for this - can it be done in a SELECT statement? Please help!
Many thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
为了实现这一点,您需要对每个测试结果使用子查询
试试这个:
To achieve this you would need to use subqueries for each test result
Try this:
这是相当通用的解决方案。 MySQL 确实支持我写的所有内容,但是可能有一个 MySQL 特定的解决方案可能更好。
This is fairly generic solution. MySQL does support everything I wrote, however there may be a MySQL specific solution that may be better.