我在一个数据库里有两张表,一张叫做牲畜,另一张叫做描述。
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'];这一切都很好,但是我需要从这个记录的description表中获取info,但是不能匹配id。原因是,info表中将有不存在于livestock表中的行,并且在每次更新牲畜表时,id将不是相同的,因为有些动物将没有库存,而且我不希望每次更新livestock表时都更新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)。如有任何帮助/指导,将不胜感激。
发布于 2013-08-04 12:22:16
我想你想要一个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。
https://stackoverflow.com/questions/18042664
复制相似问题