我正在制作一个小型 php 网站,允许用户登录,其中一个功能是允许他们互相发布消息。 消息表描述如下:
msgId int(20) NO PRI NULL auto_increment
mSender int(20) NO MUL NULL
mReciever int(20) NO MUL NULL
mTitle tinytext NO NULL
mBody mediumtext NO NULL
mRead tinyint(4) NO NULL
mDate datetime NO NULL
当用户登录时,他们将根据此表中存储的详细信息进行身份验证:
aId int(20) NO PRI NULL auto_increment
aUser varchar(30) NO UNI NULL
aPass varchar(40) NO NULL
aEmail varchar(30) NO UNI NULL
aBio mediumtext YES NULL
aReg datetime NO NULL
我使用select
语句将结果集与用户提供的凭据进行比较,如果经过身份验证我想显示在header.php
文件中包含一些状态,例如有多少条消息(如果有的话),我能够做到这一点的唯一方法是通过 messages
表上的单独选择计数。
是否有一种方法将两者结合起来,以便匹配用户凭据,同时显示未读消息的数量。我使用 mReciever 字段在 messages 表中记录用户的消息,read 可以是 1 或 0 来指示已读或未读。计数语句为:SELECT COUNT(*) AS events FROM messages WHERE mRead=0 and mReciever=$aId
,作者登录是一个简单的select * fromauthors
,其中用户和密码匹配。
最佳答案
尝试
SELECT a.aId,
a.aEmail,
a.aBio,
a.aReg,
(SELECT COUNT(*)
FROM messages
WHERE mRead=0 AND mReciever=a.aId) occurrences
FROM authors a
WHERE a.aEmail = 'email@mail.com' AND a.aPass = '*****'
这里是SQLFiddle
关于mysql - 从一个表登录用户并计算同一语句中另一个表的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15514263/