【问题标题】:How to join 2 queries from 2 different tables如何连接来自 2 个不同表的 2 个查询
【发布时间】:2013-07-04 02:28:57
【问题描述】:

编辑:这两个表之间的关键是客人的 id #。

我想同时运行 2 个来自 2 个不同表的查询

我想创建一个列表,主持人可以查看他们曾经邀请过的每个人。我想显示guestinvited 的用户名+位置

 $table = query("SELECT guest FROM parties WHERE host = $uid");   

 $table2 = query("SELECT id, username, location FROM users WHERE id = $uid");

$uid 是当前用户查看他们邀请的客人的历史记录。


聚会表

事件 |来宾 |主机

圣诞节 | 12 | 14


用户表

标识 |用户名 |位置

12 |卡罗琳 |纽约市


我该怎么做?

【问题讨论】:

  • 请仔细检查您的表名和列名。是派对桌吗?还是会员? $uid 是数字 (12) 还是名称 ('marc')?您是否在第一个查询中混淆了 guest 和 host 列?
  • sql join two table的可能重复
  • @jcsanyi $uid 是一个数字 (12)。我刚刚编辑了表的名称。谢谢
  • 您应该重新考虑一下您的数据结构。在我看来,实现所要求的唯一方法是将 user.username 加入到party.host 中(如@Daniel 的回答)以这种方式将人名视为键是一种非常糟糕的做法。如果两个人同名怎么办?他们会看到对方的数据!如果有人想在系统中更改他们的名字怎么办?他们将丢失所有旧数据。请考虑为密钥设置一个唯一编号。
  • 关键是一个唯一的 id:见上文,我编辑了我的问题。 id 12 是两个表之间的链接。

标签: php mysql


【解决方案1】:
$query = query('SELECT `u`.`username`, `u`.`location` FROM `users` u JOIN `parties` p ON `p`.`guest` = `u`.`id` WHERE `p`.`host` = ' . $uid)

【讨论】:

  • 我应该将所有的 Ps 替换为派对,将 Us 替换为用户吗?
  • 你可以 - 这是你的选择,但它并不重要。
  • 您能再看看我的问题吗?我编辑了它。两个表之间的唯一键是 id (12)。
【解决方案2】:

基本上,您需要做的就是使用 JOIN 子句。我希望下面的代码有所帮助: $sql = ("SELECT users.id, users.username, users.location, parties.guest JOIN USING (id) WHERE id = '$uid '"); $query = mysql_query($sql) or die('查询失败:' .mysql_error);

【讨论】:

    【解决方案3】:

    同时运行 2 个查询也没关系。 但是如果你想得到一个变量的结果,你可以使用它

    $query = SELECT id, username, location FROM users
    LEFT JOIN parties 
    ON users.host = parties.host
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-30
      • 2019-03-09
      • 2021-11-02
      • 2013-11-11
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 2015-11-04
      相关资源
      最近更新 更多