所以这看起来像一个简单的小问题,但是我没有成功地让这个工作正常进行。我有一个评论表,一个帖子表和一个通知表。此前,我将该postID存储在一个名为“uniqueID”的列中,以便发送通知和评论。现在我已经更改了它,以便将唯一标识的评论存储在该列中。所以我需要做的就是为通知中的每一行提供注释,转到uniqueID == id的注释表,然后返回该表中名为postID的值。
这张照片更好地显示了我的问题。
http://i41.tinypic.com/nyzolg.png
照片中的信息是:
Table: Notifications
id UserID FromID UniqueID Action State Read_Date Date
1 1 2 1 1 0 0 1325993600
2 1 6 2 1 0 0 1325993615
3 1 2 1 2 0 0 1325993622
4 1 6 2 2 0 0 1325993661
5 2 6 2 2 0 0 1325993661Action = 1表示UniqueID标识Posts中的一行;
Action = 2表示UniqueID标识注释中的一行。
Table: Posts
id ToID FromID Post State Date
1 1 2 Hey 0 1325993600
2 1 6 okay yeah 0 1325993615
Table: Comments
ID PostID FromID Comment State Date
1 1 2 lol 0 1325993622
2 1 6 ohh 0 1325993661因此,在操作为2的通知表中,UniqueID是用于注释表中的'id'的。
我想返回的是PostID,所以在查询中它就像是UniqueID是这样的:
1
2
1
1
1但是,在Action为1的情况下,UniqueID将保持不变。
我当前的查询是这样的,它在我改变我的数据库值之前工作正常。
$notificationsq = mysql_query("
SELECT
N.*,
P.*,
MAX(N.date) AS newDate
FROM
notifications N,
posts
WHERE
N.userID='$session'
AND
(
(
N.action='1'
AND
(N.state = 0 OR N.state=1)
)
OR
N.action='2'
)
AND P.state='0'
AND
N.uniqueID=P.id
GROUP BY
N.uniqueID
ORDER BY
N.state ASC,
newDate DESC
") or die(mysql_error());