首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询两个表并选择两个字段匹配的数据

查询两个表并选择两个字段匹配的数据
EN

Stack Overflow用户
提问于 2013-08-04 11:58:01
回答 1查看 1.9K关注 0票数 1

我在一个数据库里有两张表,一张叫做牲畜,另一张叫做描述。

代码语言:javascript
复制
Table: livestock
|    id     |      name         |     scientific        |
   (eg 1)      (eg Tree Frog)     (eg hyla marmorata)

Table 2: info
|  scientific     |     description      |
  hyla marmorata     description of h.m

我有一个动态页面,它从livestock中提取特定id的所有内容

代码语言:javascript
复制
$id = mysqli_real_escape_string($_GET['id']);
$query = 'SELECT * FROM `livestock` WHERE `id` = ' . (int) $_GET['id'];

这一切都很好,但是我需要从这个记录的description表中获取info,但是不能匹配id。原因是,info表中将有不存在于livestock表中的行,并且在每次更新牲畜表时,id将不是相同的,因为有些动物将没有库存,而且我不希望每次更新livestock表时都更新livestock。然而,对于所需的记录,scientific字段将始终是相同的。

我试过以下几种方法,但效果不佳.

代码语言:javascript
复制
$query =   "SELECT info.description, info.scientific, livestock.scientific ".
        "FROM info, livestock ".
        "WHERE info.scientific = livestock.scientific ";
$result2 = mysqli_query($con, $query2) or die(mysqli_error($con));  

        $row2 = mysqli_fetch_array($result2);

        echo $row2['info.description'];

这两个scientific字段都是Varchar(100)。如有任何帮助/指导,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-04 12:22:16

我想你想要一个left outer join。这将保留livestock表中的所有行,甚至那些与info表不匹配的行:

代码语言:javascript
复制
     SELECT i.description, i.scientific, l.scientific
     FROM livestock l left outer join
          info i
          on i.scientific = l.scientific
     WHERE l.id = ' . (int) $_GET['id'];

我不知道你为什么要从这两张桌子上提取scientific。查询的条件是它们是相等的。您应该使用l.scientific

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18042664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档