【问题标题】:Nested or Joins query for MySQL using PHP使用 PHP 的 MySQL 的嵌套或连接查询
【发布时间】:2011-08-25 20:35:40
【问题描述】:

我曾多次尝试在 PHP 中使用 MySQL 的嵌套查询,但它不起作用。不能进行嵌套/联接查询吗?

只是一个场景:

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

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

【问题讨论】:

  • 那不是嵌套表,那是联接。在此处发布您的表架构,以便我们可以帮助您进行 JOIN

标签: php mysql


【解决方案1】:

是的,可以在 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 语法的信息。

【讨论】:

    【解决方案2】:
    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

    【讨论】:

    • @Jean SO 在底部通常没有签名 :) 你通过投票和接受答案来感谢人们
    • 那不是签名,但提前说谢谢,如果答案可以接受,我会投票并接受
    • @jean 你的名字在底部。我也打算删除 hello 位,但错过了。我没有再次编辑它,因为这将是一个微不足道的编辑。
    • 只是要明确一点:美学上是否重要并且遵守规则更不用说......
    • @Jean 主要是因为您的名字无论如何都包含在底部,他们不想弄乱问题内容。问题内容和答案内容是最重要的事情
    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2023-02-25
    • 2021-12-06
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多