【问题标题】:mysql(i): Selecting data from multiple tables?mysql(i):从多个表中选择数据?
【发布时间】:2012-02-15 20:16:03
【问题描述】:

假设我有 2 张桌子。第一个包含用户 ID 和他们的名字。第二个包含用户 ID 和他们的姓氏,但此表中的行可能存在也可能不存在,具体取决于用户是否给出了他们的姓氏。

我想同时选择名字和姓氏,但如果只有名字存在,那么只选择它自己。

我不能使用这样的东西,因为如果第二个表格行不存在,那么它什么也不返回:

$db->query("select firstname.fname, lastname.lname from firstname, lastname where firstname.userid = lastname.userid");

谢谢。

【问题讨论】:

  • 现在是开始学习不同 JOINS 的时候了....阅读codinghorror.com/blog/2007/10/… ...这是一个很好的解释,应该会让您走上正轨
  • 没有连接就没有办法吗? ;p
  • 就其本质而言,执行一个从两个表中检索数据的查询需要一个连接...确实值得学习不同的 SQL 连接,以及何时以及如何使用它们

标签: php mysql database


【解决方案1】:
SELECT f.fname, l.lname
FROM firstname f
   LEFT JOIN lastname l
      ON f.userid = l.userid

这将返回类似:

fname | lname
John  | Doe
Bob   | NULL

NULL 表示 Bob 没有姓氏

JOIN 比您在示例中使用的笛卡尔积性能更高,因为它不会产生 {firstame,lastname} 的所有可能组合,而只会产生有意义的组合(具有相同用户 ID 的组合)

【讨论】:

  • f 是名字的别名,因此当您在查询中引用名字时,您可以只使用 f,这只是为了简洁
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2013-09-04
相关资源
最近更新 更多