使用PHP对MySQL进行嵌套或连接查询

时间:2011-05-15 10:37:44

标签: php mysql

我曾多次尝试在PHP中使用嵌套查询MySQL,但它不起作用。是否无法进行嵌套/连接查询?

只是一个场景:

我有两个表,一个表有用户ID,另一个表有数据。用户登录和会话我必须交叉检查具有用户ID(用户和数据)的两个不同的表。是否无法嵌套/连接这两个表来编写单个查询语句。

简而言之,是嵌套或连接PHP编码中允许的两个或多个表?

2 个答案:

答案 0 :(得分:2)

是的,可以在MySQL中连接两个或多个表(因此,在使用PHP时也是如此)。

如果您希望我们显示相关的联接查询,您需要发布表架构。但是,您可以尝试以下方式:

SELECT * FROM user AS t1
CROSS JOIN data AS t2
    ON t1.userid=t2.userid
WHERE t1.userid='154'

(此查询假设在两个表中始终都有一行带有userid。即使数据中没有行,您也应该使用LEFT JOIN而不是CROSS JOIN来返回一行userid.154只是一个用户标识示例。)

有关JOIN语法的信息,请查看http://dev.mysql.com/doc/refman/5.5/en/join.html

答案 1 :(得分:1)

users 

| user_id | username | password | enabled |
|---------|----------|----------|---------|
|    1    | john     | sgsd2gg  |   1     |
|    2    | jane     | sdshdhd  |   0     |

users_data

|udata_id| user_id | some_column       | 
|--------|---------|-------------------|
|   1    |   1     | Some title        |
|   2    |   2     | another title     |

由于您尚未发布表架构,我无法为您提供准确的解决方案。但假设您有一个users表和一个users_data表,其中users_data由用户拥有。您可以在表上进行连接以检索所有数据。

SELECT * -- Don't select all fields unless you need it
FROM users U LEFT JOIN users_data UD ON U.user_id = UD.user_id
WHERE U.user_id = 1

这将为ID为1的用户提取所有记录。这是一个非常简单的连接,但它应该给你一个想法。

以下是一个可以直观描述您可以使用的不同选项的示例:SQL Join Differences