我使用哪个MySQL JOIN?

时间:2011-04-19 23:42:58

标签: php mysql join

SELECT comments.comment, comments.title, userBase.uID, userBase.fname FROM comments JOIN userBase WHERE comment.ID=users.ID AND comments.uID='$uID' AND comments.title='$title' 

但是,这只会在使用时向我提供评论数据库中的信息:

$row = mysql_fetch_row($result);
    print_r($row);

3 个答案:

答案 0 :(得分:1)

如果我理解你想要的是什么,这就是查询

SELECT comments.comment, comments.title, userBase.uID, userBase.fname 
FROM comments 
INNER JOIN userBase ON comment.ID=users.ID 
                    AND comments.uID='$uID' 
                    AND comments.title='$title'

无论如何,您的问题有几个问题:

  • 我认为commentsuserBase是表格,不是数据库
  • AND条款之后有一个WHERE,这根本没有意义
  • 目前尚不清楚这种关系是什么。您确定要将comments.IDuserBase.ID等同吗?在这种情况下,您在注释中使用ID键作为外键,这不是非常易读。您可能希望使用comments.user_id
  • 之类的内容

修改:为了清楚起见,有一种替代的连接语法,它使用WHERE关键字。您可以将上述内容重写为

SELECT comments.comment, comments.title, userBase.uID, userBase.fname 
FROM comments, userBase 
WHERE comment.ID=users.ID 
  AND comments.uID='$uID' 
  AND comments.title='$title'

但它不是SQL标准。它适用于MySQL,我也认为在SQLServer中,但我不完全确定其他数据库供应商。在任何情况下,您的查询的问题是您混合了两种不同的语法。

答案 1 :(得分:0)

尝试一下:

SELECT c.comment, c.title, u.uID, u.fname
FROM comments c, userBase u
WHERE c.ID = u.ID
and c.title = '$title'
and c.uID = '$uID'

我假设所有变量都已初始化并具有一定价值。对于主键,您不需要围绕值的'(引用)。此外,您需要选择是使用JOIN样式语句还是WHERE =样式语句。

以下是有关JOINS和WHERE =语句的更多信息。 http://www.w3schools.com/sql/sql_join.asp http://www.w3schools.com/sql/sql_where.asp

答案 2 :(得分:0)

内连接将为您提供满足连接条件的两个表中的所有行,此连接条件在on子句中指定(您已省略)。相反,左连接将为您提供连接中左表中的所有行(第一个表),以及右表中满足连接条件的所有行,右连接则相反。

我认为您在SQL中寻找的是:

SELECT comments.comment, comments.title, userBase.uID, userBase.fname 
FROM comments INNER JOIN userBase ON comment.ID=users.ID 
WHERE comments.uID='$uID' AND comments.title='$title'