查询多个表 - 返回1个匹配项

时间:2010-11-09 01:22:44

标签: php mysql sql

我有两张桌子:一张餐馆桌和一张桌子。 “地址”表中的“EntryID”键是一个与餐馆表中每条记录的主键相同的数字。因此EntryID是外键。我希望能够修改我的PHP选择脚本以跨这两个表搜索数据库。这就是我现在所拥有的:

  $RPrice = $_GET["price"]; 
  $RType = $_GET["type"];
  $RAtmosphere = $_GET["RAtmosphere"];
  $RArea = $_GET["RArea"];
if (!empty($RPrice)) $w[]="Foodlist.price='".mysql_real_escape_string($RPrice)."'";  
if (!empty($RType)) $w[]="Foodlist.ftype='".mysql_real_escape_string($RType)."'";
if (!empty($RAtmosphere)) $w[]="Foodlist.atmosphere='".mysql_real_escape_string($RAtmosphere)."'";
if (!empty($RArea)) $w[]="Addresses.area='".mysql_real_escape_string($RArea)."'";


if (count($w)) $where="WHERE ".implode(' AND ',$w); else $where=''; 
$sql="SELECT Foodlist.ID, Foodlist.name from Foodlist JOIN Addresses ON (Foodlist.ID = Addresses.EntryID) $where"; 


$result= mysql_query($sql);
  while($row=mysql_fetch_array($result)){
        $ID=$row['ID'];
  echo "<a class=\"cross-link\" href=\"javascript:ajaxpage('result.php?id=$ID', 'results2'); ajaxpage('videoloader.php?id=$ID', 'results1');\">".$row['name']."</a><div id=\"contentarea\"></div>";

  }

我已经将“区域”部分注释掉了,因为这是需要更改的内容。

我希望能够保持与以前相同的功能,但我希望能够搜索多个区域记录。我希望这是有道理的。如果您需要更多说明,请告诉我。

Foodlist(表)包含以下列:ID,价格,类型,氛围 地址(表)包含以下列:EntryID,area

现在,查询假设所有这些列(entryID除外)都在foodList中。我需要查询从地址表中搜索区域。另外,我想从每个ID的查询返回1个结果。 FoodList表中的一条记录可能在Addresses表中有多个相应的记录。在这种情况下,我只希望它返回与给定区域匹配的那个。

1 个答案:

答案 0 :(得分:0)

SELECT f.ID, name FROM Foodlist f JOIN Addresses a ON (f.ID = a.EntryID) $where

我相信这应该足以满足你的需要。