好吧,我不确定如何将它简短地作为一个问题说出来,所以对不起,它措辞不妙。我无法在其他地方找到答案(可能是因为我无法正确回答我的问题)从表中打印记录但不打印重复记录
这是我的问题:我的收件箱/发件箱系统已实施到我的网站中,我想要do有一个已经给这个用户发送了一条消息的人的名字列表,但是我想不出有什么办法可以在这个地方浏览消息表,并且只用一个用户名选择一条记录,不够清晰,高兴,如果需要进一步扩大..
谢谢..
好吧,我不确定如何将它简短地作为一个问题说出来,所以对不起,它措辞不妙。我无法在其他地方找到答案(可能是因为我无法正确回答我的问题)从表中打印记录但不打印重复记录
这是我的问题:我的收件箱/发件箱系统已实施到我的网站中,我想要do有一个已经给这个用户发送了一条消息的人的名字列表,但是我想不出有什么办法可以在这个地方浏览消息表,并且只用一个用户名选择一条记录,不够清晰,高兴,如果需要进一步扩大..
谢谢..
最好最好是可能创建一个新表,将代表着“发了一个信息给我(或对方?)之前“
您基本上需要一个用户标识的多对多关系表来表示这个。
创建一个表HasMessaged,具有两列SenderId和ReceiverId。然后,您可以通过此表将任何用户加入自己,并为任何单个用户创建一个列出每个人的消息。该表最初需要通过在消息表上运行一次昂贵的查询来填充,但它不应该太糟糕。填充完成后,您可以通过执行简单的INSERT ... ON DUPLICATE KEY UPDATE来更新它,以确保表中包含正确的记录。
这将是有益的,如果你提供了一些代码&你有什么结构。
我假设你有一个表是这样的:
CREATE TABLE `messages` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`sender` VARCHAR (50) NOT NULL ,
`receiver` VARCHAR (50) NOT NULL ,
`dateSent` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`contents` TEXT NOT NULL)
和输入数据,这样的事情:
id sender receiver dateSent contents
1 Joe Jane 4/8/2013 9:15 How are you?
2 Jane Joe 4/8/2013 9:22 Fine
3 Joe Jane 4/8/2013 9:27 Can you help me with MySQL?
4 Jane Joe 4/8/2013 9:31 Sorry. Ask Meg.
5 Joe Meg 4/8/2013 9:38 Can you help me with MySQL?
8 Meg Joe 4/8/2013 9:45 Sure!
现在你想知道,谁传话给乔。下面是SQL:
SELECT `sender` FROM `messages`
WHERE `receiver` = "Joe"
GROUP BY `sender`
是SQL的结果将是:
Sender
Jane
Meg
即使简派乔2级的消息,她的名字只出现一次。
如果我的回答有帮助,请注册或接受它。如果没有,请在下面评论,我会修改并改进我的答案。 – Marjeta
就像SELECT DISTINCT user FROM message ....?如果没有一些代码或数据库模式,很难回答。 –