2010-06-16 138 views
0

我目前在MySql數據庫中有2個表。php從mysql獲取用戶數據

結構:

messages 
id | content | user_id | time 

submessages 
id | subcontent | msg_id | user_id | time 

submessages表,列msg_id是一個外鍵,表messages引用id列。

現在我需要從PHP查詢

$cur_userID = $user->current_id; // current user id. 
SELECT * FROM messages WHERE id > '{$_GET['id']}' // problem here 

如何查詢submessagessubcontent被張貼由其他用戶 - exlcuding當前用戶?

意味着什麼與user_id等於$cur_userID不應顯示。

謝謝。

回答

-1
"SELECT * FROM messages WHERE id != " . intval($_GET['id']); 
+0

實際上,看起來要做的是給出所有的信息,除了你感興趣的信息之外。我認爲「id」只是消息的id,而不是用戶。 – MJB 2010-06-16 14:26:05

+0

在SQL中不等於'<>',而不是'!='? – 2010-06-16 14:34:56

+0

@Richard JP Le Guen:在標準SQL中,是的。但MySQL接受這兩種形式:http://dev.mysql.com/doc/refman/5.0/en/non-typed-operators.html – ircmaxell 2010-06-16 14:39:03

0

你想得到子消息的詳細信息,對不對?此查詢將從消息表中獲取所有信息,以及來自每個子消息的所有信息。因此加入。但是它會排除與消息具有相同user_id的子消息(答案?)(問題?)。

SELECT m.* sm.* 
FROM messages m 
INNER JOIN submessages sm 
    ON m.id = sm.msg_id 
WHERE id > '{$_GET['id']}' // dont know why gt is used here... 
    AND m.user_id <> sm.user_id 

而我忽略了把這個放到PHP中所需的所有格式,因爲真正的問題是,我瞭解它是如何寫入SQL的。

另外,我沒有得到id > $_GET['id']部分。看起來您要求在此消息之後創建的所有消息,並且您想要查找消息的子消息。我真的不知道這是否合理,但如果這是你想要的,這是一種應該起作用的方式。我懷疑你想要等於,而不是大於