早上好。我一直在为无法解决的 MySQL 问题而苦苦挣扎。
问题:我不明白如何SELECT
需要的数据。 (子查询/INNER JOIN/更多?)
我有两个表:user_pm
和 user_pm_hide
在 user_pm
我存储消息:
在 user_pm_hide
中,我存储隐藏的(“已删除的消息”),该用户已“删除”它。
例如我收到Inbox Count
This works
$stmt = $this->conn->prepare("SELECT count(*) FROM user_pm WHERE sentto=('$username')");
$stmt->execute();
$inboxall = $stmt->fetchColumn();
$stmt = $this->conn->prepare("SELECT count(*) FROM user_pm_hide WHERE user_id=('$username')");
$stmt->execute();
$inboxhidden = $stmt->fetchColumn();
$inboxtotal = $inboxall - $inboxhidden;
但我不知道如何显示消息,这不是隐藏的。我正在努力实现它:
SELECT user_pm.*, (SELECT * FROM user_pm_hide WHERE user_id != $username) FROM user_pm user_pm WHERE sentto=('$username')
我现在得到的错误:
SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)
最佳答案
您缺少内部 SELECT
部分中的单引号。尝试
SELECT
user_pm.*,
(SELECT * FROM user_pm_hide WHERE user_id != '$username')
FROM
user_pm
WHERE
sentto=('$username')
关于php - MySQL 从 2 个表中选择(一个有消息/第二个存储隐藏消息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45833355/