2010-11-09 65 views
0

我有兩個表格:一張餐廳和一張表格。 Addresses表中的「EntryID」鍵是一個與餐館表中每條記錄的主鍵相同的數字。所以EntryID是一個外鍵。我希望能夠修改我的PHP選擇腳本以在這兩個表中搜索數據庫。以下是我現在所擁有的:查詢多個表格 - 返回1個匹配

$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,面積

眼下,查詢假設所有這些列(除了entryID)在foodList中。我需要查詢來從地址表中搜索區域。另外,我希望從每個ID的查詢中返回1個結果。 FoodList表中的一條記錄有可能在Addresses表中有多個對應的記錄。在這種情況下,我只想讓它返回與給定區域相匹配的那個。

回答

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

我相信這應該足以滿足您的需求。

+0

這不起作用。例如,在食物列表'12'中有一個ID。在地址表中,可能有兩個記錄與'12'相關聯,其中一個面積=北,另一個面積=南。我應該只返回其中之一。此查詢也只返回在地址表中有記錄的值。它可能並非如此。 – scifirocket 2010-11-09 02:05:00

+0

然後在這種情況下添加LIMIT 1並將JOIN變爲LEFT JOIN,問題就會解決。 – 2010-11-09 12:30:57