查询表视图

时间:2011-12-11 14:38:16

标签: sql

我有三张桌子:

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”。从下拉菜单然后你就会明白我的意思。

1 个答案:

答案 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;

我认为这样做可以调用它并与该值进行比较而没有问题