php - 选择具有第一个条件的第三个表[SQL]

标签 php mysql sql database

此 SQL 运行良好,仅显示表 gchat 中的消息,其中用户是组中的成员

SELECT *
FROM gchat 
LEFT JOIN codes ON (gchat.code = codes.code)
WHERE codes.u_username = 'user1'

我需要补充的是,我还有表名 (pchat) 被认为是用户之间的私有(private)聊天,所以我也想在第一个 SQL 语句中显示属于“user1”的消息

表结构

聊天

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;

聊天

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;

最佳答案

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

在这里,我为 gchatpchat 表做了两个不同的投影,并使用 UNION 合并了两个表中的所有记录。对于特定用户使用的WHERE条件,将过滤掉整串记录。

试试这个代码。希望这对你有帮助。

关于php - 选择具有第一个条件的第三个表[SQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42645649/

相关文章:

mysql - 如何在子查询中使用该行的同时更新行中的值?

java - 用于 PHP 和/或 Java 的 UML 类图生成器

PHP MySQL 查询数组帮助

php - 如何将数组值插入到数据库中

php - 一旦用户登录(通过我创建的登录表单),我如何将他们发送到不同的页面?

mysql - 超过 1 个表的 SQL 内连接问题

javascript - 如何使用 JavaScript 加载页面而不是重定向?

PHP:选择更改时,将表单发布给自己

php - Laravel 价格过滤器

mysql - 表之间有空格的 SELECT 语句?