这个SQL工作正常,只显示用户是该组成员的表gchat中的消息
SELECT *
FROM gchat
LEFT JOIN codes ON (gchat.code = codes.code)
WHERE codes.u_username = 'user1'
我需要添加的内容,我还将表名(pchat)视为用户之间的私聊,因此我也希望在第一个SQL语句中显示属于'user1'的消息
表格结构
Google即时通讯
CREATE TABLE `gchat` (
`id` int(11) NOT NULL,
`code` varchar(255) NOT NULL,
`fromuser` varchar(255) NOT NULL,
`text` text NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
pchat
CREATE TABLE `pchat` (
`id` int(11) NOT NULL,
`fromuser` varchar(255) NOT NULL,
`touser` varchar(255) NOT NULL,
`text` text NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
答案 0 :(得分:0)
SELECT * FROM
(
SELECT gchat.id,gchat.fromuser,gchat.text,gchat.date
FROM gchat
LEFT JOIN codes ON (gchat.code = codes.code)
WHERE codes.u_username = 'user1'
UNION
SELECT id,fromuser,text,date
FROM pchat
WHERE fromuser='user1'
)Z
在这里,我为gchat
和pchat
表做了两个不同的投影,并使用UNION
组合了两个表中的所有记录。对于使用的特定用户WHERE
条件,将过滤掉整堆记录。
试试这段代码。希望这会对你有帮助。