我在数据库中有两个表,一个叫牲畜,另一个说明。
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
表的info
,但无法匹配id。原因是livestock
表中的行不会出现在description
表和id中,每次更新牲畜表都不一样,因为有些动物没有库存我不想每次更新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
两个{{1}}字段都是Varchar(100)。任何帮助/指导将不胜感激。
答案 0 :(得分: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
。