我有三张桌子:
tblsyslur (syslur = states) 字段:syslaid(pk) sysla
tblhreppar (hreppar = muncipalities) 领域:hrepparid(pk) syslaid(fk) hreppur
tblbæir(bæir= cities) 领域:bæirid(pk) hrepparid(fk) bæir
我有一个问题:
$sql="SELECT * FROM tblhreppar WHERE hrepparid = '".mysql_real_escape_string($q)."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo utf8_encode("<td>" . $row['hreppur'] . "</td>");
echo "</tr>";
}
使用此查询只能让我在输出中获取字段hreppur或字段hreppurid所以我想创建一个结合了三个表的视图,所以我做了这个查询:
create view view_syslurhrepparbæir as
select tblhreppar.hrepparid, tblsyslur.sysla, tblhreppar.hreppur, tblbæir.bæir
from tblhreppar, tblsyslur, tblbæir
where (tblsyslur.syslaid = tblhreppar.syslaid)
AND (tblbæir.hrepparid = tblhreppar.hrepparid)
order by tblsyslur.sysla;
这意味着我有一个包含以下字段的视图: 的 hrepparid, sysla(州), hreppur(muncipality), bæir(city)
我将查询更改为:
$sql="SELECT * FROM view_syslurhrepparbæir WHERE hrepparid = '".mysql_real_escape_string($q)."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo utf8_encode("<td>" . $row['hreppur'] . "</td>");
echo utf8_encode("<td>" . $row['bæir'] . "</td>");
echo "</tr>";
}
但是 - 此仅的输出为我提供了字段'hreppur'而不是'bæir'的值。我只是在我的表中得到一个空行,其中'bæir'值应该位于。
您可以在此处查看示例:http://www.hafdal.dk/test/getuser2.php 尝试选择“Akrahr”。从下拉菜单然后你就会明白我的意思。
答案 0 :(得分:0)
尝试添加“as”以标识唯一字段E.G
create view view_syslurhrepparbæir as
select tblhreppar.hrepparid AS hrepparid, tblsyslur.sysla, tblhreppar.hreppur, tblbæir.bæir
from tblhreppar, tblsyslur, tblbæir
where (tblsyslur.syslaid = tblhreppar.syslaid)
AND (tblbæir.hrepparid = tblhreppar.hrepparid)
order by tblsyslur.sysla;
我认为这样做可以调用它并与该值进行比较而没有问题