【问题标题】:Retrieving MYSQL Join values from PHP从 PHP 中检索 MYSQL 连接值
【发布时间】:2009-11-03 11:03:07
【问题描述】:

我有两个或多个表在同一列名下保存值。现在,当我加入这两个表时,列名保持不变。在 PHP ($row['name']) 中检索这些值时,我遇到了问题,因为列 'name' 被使用了两次。

是否有任何可能的方法来分隔查询中的这两列?

  SELECT *
    FROM stories s
    JOIN authors a ON a.id = s.authorid

表格故事 id、名称、内容、日期

作者 身份证、姓名、日期

当我加入这两个时,我会得到一个具有相似“名称”列的表。

有没有办法将两个表分开,所以作者表前面有一个前缀?例如。作者姓名 /authors_*

【问题讨论】:

    标签: php sql mysql left-join


    【解决方案1】:

    是的,以这种方式更改您的 SQL:

    SELECT 
      s.Id as StoryId, 
      s.Name as StoryName,
      a.Id as AuthorId, 
      a.Name as AthorName,
    FROM stories s
    JOIN authors a ON a.id = s.authorid
    

    然后在 php 中,使用 StoryId、StoryName、AuthorId 和 AthorName 而不是 Id 或 Name。

    希望对你有帮助。

    【讨论】:

    • 谢谢,这应该可以解决问题,但是我希望我可以添加一个前缀,它会自动添加诸如 authors_* 之类的东西
    • 不幸的是,它看起来没有自动前缀。如果这个答案没问题,别忘了“接受”它:p
    【解决方案2】:

    是的!

    SELECT *, stories.name AS s_name, authors.name AS a_name
    FROM stories s
    JOIN authors a ON a.id = s.authorid
    

    你有它。所有字段加上两个额外的! ;)

    希望对你有帮助。

    【讨论】:

    • 谢谢!我感谢您的所有回复。由于我是 SO 的新手,因此我会单独向所有人添加感谢信。
    【解决方案3】:

    抱歉,您不能真正在字段级别添加前缀,但如果您可以调用 2 个查询,只需使用

    SELECT s.*
    FROM stories s
    JOIN authors a ON a.id = s.authorid
    

    结果集将仅包含故事字段,您可以像通常使用 php 一样使用这些字段。然后对作者再次执行相同的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 2016-07-12
      • 2016-08-17
      相关资源
      最近更新 更多