繁体   English   中英

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

[英]Nested or Joins query for MySQL using PHP

我已经尝试过很多次在PHP中使用MySQL的嵌套查询,但是它不起作用。 无法执行嵌套/联接查询吗?

只是一个场景:

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

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

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

如果要我们显示相关的联接查询,则需要发布表模式。 您可以尝试以下方法:

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

(此查询假定在两个表中总是有一个带有用户ID的行。即使该用户ID的数据中没有行,也应使用LEFT JOIN而不是CROSS JOIN返回一行。154仅是示例用户ID。 )

请参阅http://dev.mysql.com/doc/refman/5.5/en/join.html,以获取有关JOIN语法的信息。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM