2010-06-16 137 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']部分。看起来您要求在此消息之后创建的所有消息,并且您想要查找消息的子消息。我真的不知道这是否合理,但如果这是你想要的,这是一种应该起作用的方式。我怀疑你想要等于,而不是大于