1

我在数据库中有两张表,一张叫家畜,另一张是描述。

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

$id = mysqli_real_escape_string($_GET['id']);
$query = 'SELECT * FROM `livestock` WHERE `id` = ' . (int) $_GET['id'];

这一切都很好,但我需要descriptioninfo表中获取这条记录,但不能匹配一个 id。原因是表中的行info不会出现在livestock表中,并且每次我更新家畜表时 id 都不相同,因为有些动物没有库存,我不想更新description每一个我更新livestock表格的时间。但是,对于所需记录,该scientific字段将始终相同。

我已经尝试了以下但它没有工作......

$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)。任何帮助/指导将不胜感激。

4

1 回答 1

1

我想你想要一个left outer join. 这将保留表中的所有行livestock,即使是那些与表不匹配的行info

     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.

于 2013-08-04T12:22:16.523 回答