Немного изменил таблицу базы данных MYSQL, этот запрос должен работать как прежде - PullRequest
0 голосов
/ 08 января 2012

Так что это кажется простой маленькой проблемой, но мне не удалось заставить ее работать должным образом. У меня есть таблица комментариев, таблица сообщений и таблица уведомлений. Ранее я сохранял 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           1325993661

Действие = 1 означает, что UniqueID идентифицирует строку в сообщениях; Действие = 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, уникальные идентификаторы предназначены для идентификатора в таблице комментариев. То, что я хочу вернуть, это PostID, поэтому в запросе это будет так, как если бы это был UniqueID:

1
2
1
1
1

Но UniqueID останется прежним, когда Action равно 1.


Мой текущий запрос таков, и он работал нормально, пока я не изменил значения в моей базе данных.
$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());

1 Ответ

1 голос
/ 08 января 2012

Попробуйте добавить «C. *» к предложению select, «comments C» к предложению from и замените «N.action = '2'" на

(N.action='2' and (N.uniqueId = C.id))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...