我有一个令人困惑的场景。我有2个表。一个表存储已注册的新用户(tblAllUsers),另一个存储创建的新事件(tblAllEvents)。现在我想显示两者的组合gridview中的表ORDER BY注册日期时间:
如果最新值来自tblAllUsers,它应该显示 "迈克尔刚刚在网站上注册了#34; Michael是tblallusers中用户的第一个名字
如果值来自tblAllEvents,它应该显示 "钢琴展是由User34"其中钢琴展是tblAllEvents中的EventName
到目前为止,我已尝试创建两个表的联合,如:
Select FirstName,RegDateTime from tblAllUsers
UNION ALL
Select EventName,RegDateTime from tblAllEvents
ORDER BY RegDateTime DESC
但是上面给出了FirstName列下的FirstName和Title,很难区分。
我如何为此设计gridview模板?
提前致谢。
答案 0 :(得分:1)
您可以像这样更改您的查询:
SELECT TOP 1 *
FROM (SELECT FirstName, NULL AS EventName, RegDateTime
FROM tblAllUsers
UNION ALL
SELECT NULL, EventName, RegDateTime
FROM tblAllEvents) AS a
ORDER BY RegDateTime DESC
所以现在你有三列,FirstName或EventName被填充,具体取决于它来自哪个表。
在GridView中,您可以测试哪个值为空(EventName或FirstName)并相应地更改文本。
修改强> 您甚至可以只返回第一行(使用最新的RegDateTime):
Vec<String>
答案 1 :(得分:1)
您可以选择添加event type
列并使用它来检查如何在网格视图上处理它
Select 'User' as EventType, FirstName,RegDateTime from tblAllUsers
UNION ALL
Select 'Event' as EventType, EventName,RegDateTime from tblAllEvents
ORDER BY RegDateTime DESC
您可能还需要在'Event'
中添加用户名,因为您还会显示创建活动的用户的姓名