MySQL从2个表中选择(一个包含消息/第二个存储隐藏消息)

时间:2017-08-23 07:32:27

标签: php mysql

早上好。我一直在努力解决我无法解决的MySQL问题。

问题:我不明白如何SELECT需要数据。 (SubQuery / INNER JOIN / more?)

我有两张桌子:user_pmuser_pm_hide

user_pm我存储消息:

user_pm_image

user_pm_hide中,我存储了该用户的隐藏("已删除的消息"),该用户有"已删除"它

user_pm_hide_image

例如,我收到Inbox Count 此作品

$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]:基数违规:1241操作数应包含1列

1 个答案:

答案 0 :(得分:0)

你错过了内部SELECT部分的单引号。尝试

SELECT 
  user_pm.*, 
  (SELECT * FROM user_pm_hide WHERE user_id != '$username') 
FROM 
  user_pm 
WHERE 
  sentto=('$username')