对MYSQL数据库表做了一点修改,需要像以前一样执行此查询吗

对MYSQL数据库表做了一点修改,需要像以前一样执行此查询吗,mysql,datatable,Mysql,Datatable,所以这似乎是一个简单的小问题,但我还没有成功地让它正常工作。我有一个评论表、一个帖子表和一个通知表。之前,我将posted存储在一个名为“uniqueID”的列中,用于通知和评论。现在我已经更改了它,以便注释唯一id存储在该列中。因此,我所需要做的就是,对于通知中的每一行注释,转到comments表,其中uniqueID==id,然后返回该表中名为postID的值 这是一张更好地展示我的问题的照片 照片上的信息是: Table: Notifications id UserID From

所以这似乎是一个简单的小问题,但我还没有成功地让它正常工作。我有一个评论表、一个帖子表和一个通知表。之前,我将posted存储在一个名为“uniqueID”的列中,用于通知和评论。现在我已经更改了它,以便注释唯一id存储在该列中。因此,我所需要做的就是,对于通知中的每一行注释,转到comments表,其中uniqueID==id,然后返回该表中名为postID的值

这是一张更好地展示我的问题的照片


照片上的信息是:

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           1325993661
Action=1表示UniqueID标识POST中的一行; 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
因此,在action为2的Notifications表中,UniqueID用于Comments表中的'id'。 我想要返回的是posted,因此在查询中,它就像UniqueID是这样的:

1
2
1
1
1
但当动作为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());
尝试将“C.*”添加到select子句,将“comments C”添加到from子句,并将“N.action='2'”更改为


嗯。。。什么?更多关于表格结构的详细信息以及您正试图完成的工作将非常有用。它在照片中显示了我的表格。我不知道该怎么解释你是说“评论表、帖子表和通知表”吗?类似地,您说“将postID存储在一个名为“uniqueID”的行中”,但我怀疑您的意思是“将postID存储在一个名为“uniqueID”的列中”。如果是这样,请不要误用术语;如果你把一列称为一行,这会让你很难得到帮助。除了数据库/表问题,在阅读了几遍这个问题之后,我很确定你指的是一行,而你指的是列。你的问题是要执行解引用吗?是的,我的意思是列而不是行,对此很抱歉。我正匆匆忙忙地把它打出来。但你是对的。而在照片中的是有名字的桌子上面的每个人都认为你误解了什么。通知列uniqueID中的当前值不是我要比较的id,我想从comments表中获取postID,其中N.uniqueID=C.id,我认为唯一的方法是创建一个新的“列”,就像我对MAX(N.date)所做的那样正如NewDate所说,我怀疑关于你的问题和相关数据,有一些事情我不了解。抱歉。是的,没关系,这有点复杂,我很难准确地解释我正试图做什么。出于这个原因,谢谢你的努力。你可能想花一些时间思考如何编辑问题以进行澄清,以及回答Jonathan关于通知表第五行的问题。嗯,我想我几乎找到了解决办法
(N.action='2' and (N.uniqueId = C.id))