我有這個查詢工作得很好,但是我想改變我的數據庫表一點,所以我需要改變我的查詢一點點。我的工作的查詢是這樣的:MYSQL從數據庫中的其他表中選擇,匹配數據等
$notificationsq = mysql_query("
SELECT
N.*,
P.*,
MAX(N.date) AS newDate
FROM
notifications N,
posts P
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());
現在,我在做什麼正在改變行「UNIQUEID」,所以我需要做的基本上是:
if(action==2){unqiqueID=C.postID} else {uniqueID=N.uniqueID}
這裏是我的表結構: 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
Action = 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'的。 我想回的是帖子ID,所以在查詢這純粹是因爲如果是的UniqueID這個:
1
2
1
1
1
但是,在動作爲1
謝謝,您能否使用我的代碼將某些東西放在一起以向我展示您的意思?這將是非常感謝。 – 2012-01-08 00:54:13
@DylanCross:說實話,您的查詢目前對我來說沒有什麼意義。我可以看到,您正在嘗試使用'C.postID'或'N.uniqueID'來匹配'P.id',具體取決於特定條件。這是讓我最困惑的狀況。你能解釋一下你想做什麼嗎?我可能會提出一個不同的方法,但首先我想了解那裏發生了什麼。 – 2012-01-08 04:24:42
好吧,N.uniqueID是以前用來存儲C.postID的地方。現在它是註釋表中註釋的唯一標識。這是一張照片。 http://i41.tinypic.com/nyzolg.png – 2012-01-08 04:34:40