今天给别人讲51单片机的题,难理解,就用Keil uVision3给她演示,期间发现我不知道怎么显示内外ram中的数据,后来研究了一下找到了方法:
在MEMORY WINDOW里输入D:0x00就能查看内ram中的数据
在MEMORY WINDOW里输入X:0x00就能查看外ram中的数据
在MEMORY WINDOW里直接输入地址或者输入C:0x00显示出来的是rom中的数据
完!
2007年5月18日星期五
2007年5月14日星期一
给表起个别名(sql)
今天碰见这么一个问题,抽象成模型是这样的:
在数据库中有两个表,分别是[Messages]聊天记录和[Users]用户,聊天记录中包括[MsgId]消息编号(int)、[SenderId]发送者编号(int)、[ReceiverId]接收者编号(int)和[Content]消息内容(text)四个字段,其中MsgId是主键;用户表中包括[UsrId]用户编号(int)和[UsrName]用户名(nvarchar)两个字段,主键为UsrId,即
由于要人性化,现在需要展现给观众的是消息编号、发送人姓名、接收者姓名和消息内容,即
这就不得不对Users表进行两次关联,从而的到需要的结果 。起初我以为很简单只要用SELECT #$%#$% FROM MessagesINNER JOIN Users ON Messages.SenderId = Users.UsrId ON Messages.ReceiverId = Users.UsrName就可以,结果发现SELECT后面不知道该怎么写了(乱码那里),由于也不知道该怎么形容这种问题,书上和网上都没找到相关方法。有人说编一个翻译函数,还有人说建一个临时表来协助查询,但我认为应该有更好的办法,后来偶然间发现原来可以用一个关键字叫AS对Users表做一个“镜象”,再来完成查询,就能得到正确的结果,语句这么写:
SELECT Messages.MsgId, Sender.UsrName AS SenderName, Receiver.UsrName AS ReceiverName,Messages.Content FROM Messages INNER JOIN Users AS Sender ON Sender.UsrId= Messages.SenderId INNER JOIN Users AS Receiver ON Messages.ReceiverId= Receiver.UsrId
意思是用tableexpression1 AS tableexpression2对User表做了两个“镜象”,一个用来关联Messages.SenderId,另外一个用来关联Messages.ReceiverId,这样就完成了对编号进行翻译的功能。
值得一提的是如果要考虑到某个人对空气说的话(ReceiverId为空或Users表中对应不上)并保证可以看到全部聊天记录的话,可以把INNERJOIN换成LEFT JOIN或RIGHT JOIN,总之要多去尝试就会发现问题的解决方法。
在数据库中有两个表,分别是[Messages]聊天记录和[Users]用户,聊天记录中包括[MsgId]消息编号(int)、[SenderId]发送者编号(int)、[ReceiverId]接收者编号(int)和[Content]消息内容(text)四个字段,其中MsgId是主键;用户表中包括[UsrId]用户编号(int)和[UsrName]用户名(nvarchar)两个字段,主键为UsrId,即
|
|
| MsgId | SenderName | ReceiverName | Content |
| 1 | Tom | Jim | Hello! |
| 2 | Jim | Tom | Hello! |
| 3 | Lucy | Tom | How R U ? |
| 4 | Lucy | Jim | Good Day |
| 5 | Tom | Lucy | Fine! |
| ... | ... | ... | ... |
SELECT Messages.MsgId, Sender.UsrName AS SenderName, Receiver.UsrName AS ReceiverName,Messages.Content FROM Messages INNER JOIN Users AS Sender ON Sender.UsrId= Messages.SenderId INNER JOIN Users AS Receiver ON Messages.ReceiverId= Receiver.UsrId
意思是用tableexpression1 AS tableexpression2对User表做了两个“镜象”,一个用来关联Messages.SenderId,另外一个用来关联Messages.ReceiverId,这样就完成了对编号进行翻译的功能。
值得一提的是如果要考虑到某个人对空气说的话(ReceiverId为空或Users表中对应不上)并保证可以看到全部聊天记录的话,可以把INNERJOIN换成LEFT JOIN或RIGHT JOIN,总之要多去尝试就会发现问题的解决方法。
订阅:
评论 (Atom)