2010-01-22 171 views
0

我有兩個表格,房東和房產。我的屬性表有; ID,地址,郵政編碼,租賃和landlordID。我面對的問題是:如果我想搜索所有擁有Mr.Spina作爲房東的房產,我需要在名爲「spina」的房東數據庫中搜索他的ID並將其保存在屬性數據庫中提取屬性的詳細信息。從一個查詢中的兩個mysql表中選擇數據

我認爲這會工作,但它不正確:

> SELECT property.ID, property.address, property.postcode, property.lease, landlords.firstName, landlords.lastName FROM property INNER JOIN landlords ON landlords.firstName LIKE '%spina%' OR landlords.lastName LIKE '%spina%' 

我附上的表格結構的圖像。

鬥地主:

只允許一個鏈接

屬性:

http://img5.imageshack.us/img5/7199/propertyn.gif

插入 「脊柱」 進入該領域的結果應該然後是: 只允許一個鏈接

這是我提取的代碼...

> if($field=="landlord"){ 
>  
>  $sql="SELECT property.ID, property.address, property.postcode, 
> property.lease, landlords.firstName, 
> landlords.lastName FROM ".$do." INNER 
> JOIN landlords ON landlords.firstName 
> LIKE '%".$q."%' OR landlords.lastName 
> LIKE '%".$q."%'"; 
>   } else{ 
>  $sql="SELECT * FROM ".$do." WHERE " . $field . " LIKE '%" . $q . "%'"; 
> } //end special case  $result = 
> mysql_query($sql); 
>  echo "$sql"; 
>  echo "<table border='1'> 
>  <tr> 
>  <th>ID</th> 
>  <th>Address</th> 
>  <th>Post Code</th> 
>  <th>Lease</th> 
>  <th>Landlord</th> 
>  </tr>"; 
> 
> while($row = 
> mysql_fetch_array($result)) 
>  { 
>  echo "<tr>"; 
>  echo "<td>" . $row['ID'] . "</td>"; 
>  echo "<td>" . $row['address'] . "</td>"; 
>  echo "<td>" . $row['postcode'] . "</td>"; 
>  echo "<td>" . $row['lease'] . "</td>"; 
>  echo "<td>" . $row['firstName'] ." ". $row['lastName'] ."</td>"; 
>  echo "</tr>"; 
>  } echo "</table>"; 
> 
> mysql_close(); 

非常感謝提前!

回答

0

好像你不正確地使用INNER JOIN;你想要的是這樣的:

SELECT 
    property.ID, property.address, property.postcode, property.lease, landlords.firstName, landlords.lastName 
FROM 
    property 
INNER JOIN 
    landlords 
ON 
    landlords.ID = property.landlord 
WHERE 
    landlords.firstName LIKE '%spina%' 
    OR 
    landlords.lastName LIKE '%spina%' 
+0

非常感謝,您的文章用一個組合上面做記號! – nicky 2010-01-22 18:02:23

0

你說:

> SELECT property.ID, property.address, property.postcode, property.lease, firstName, lastName FROM property INNER JOIN landlords ON firstName LIKE '%spina%' OR lastName LIKE '%spina%' 

您的加盟表達需要說這兩個表是如何相關,例如

... LEFT JOIN landlords ON landlords.ID == property.landlord_ID ... 

然後移動選擇到WHERE條款:

... WHERE firstName LIKE '%spina%' OR lastName LIKE '%spina%' 

示例:

> cat > landlords.csv 
1,Alex,Spina 
2,Spina,Brown 
3,Katell,Jentreau 

> cat > properties.csv 
1,toytown 
2,hogwarts 
3,mars 
4,new york 
2,sheffield 

> sqlite3 

> CREATE TABLE landlords (ID,firstname,lastname); 
> .import "landlords.csv" "landlords"; 
> CREATE TABLE properties (landlord,address); 
> .import "properties.csv" "properties"; 
> SELECT * FROM properties JOIN landlords ON landlord = ID 
    WHERE (firstname LIKE "Spina" OR lastname LIKE "Spina"); 
landlord,address,ID,firstname,lastname 
1,toytown,1,Alex,Spina 
2,hogwarts,2,Spina,Brown 
2,sheffield,2,Spina,Brown 
1

在你的示例查詢中,你需要加入房東的ID。

SELECT property.ID, property.address, property.postcode, property.lease, 
    landlords.firstName, landlords.lastName 
FROM property INNER JOIN landlords ON landlords.id = property.landlordID 
WHERE landlords.firstName LIKE '%spina%' OR landlords.lastName LIKE '%spina%'