2010-12-06 21 views
0

私はその場所の下にリストされているすべての項目を持って来る1つのキーワードで4つの異なるテーブルを検索するクエリを作成しようとしています。国 - - 国家 - 郡 - 市PHP MYSQL複数のテーブルを持つ同じキーワードを検索

例えばため

は、私は4つのテーブル を持っています英国 - >イングランド - >ウェスト・ミッドランズ - >バーミンガム

West Midlandsのユーザーの種類は、私はバーミンガム、ウォールソールの下の項目を含むすべての項目を見るために習慣、私は

$location = $_POST['location']; 
$city_sql = " SELECT * FROM city"; 

$city_result = $db->query($city_sql); 
$new_array=array(); 
$i=0; 
while ($fetch_sql = $db->fetch_object($city_result)){ 

    if (strcmp(soundex(strtolower($fetch_sql->name)), soundex(strtolower($location))) == 0) { 
     $new_array[$i]['name'] = $fetch_sql->name; 
     $new_array[$i]['code'] = $fetch_sql->name; 
     $i++; 
    } 
} 

$k=0; 
for ($j=0; $j < sizeof($new_array); $j++){ 
    $i = similar_text(strtolower($new_array[$j]['name']), strtolower($db->escape_value($location)), &$similarity_pst); 
    if($i > $k && $i > 7){ 
     $k = $i; 
      $city_db_name = $new_array[$j]['name']; 
      $city_code = $new_array[$j]['code']; 
    } 
} 
思い付いたこの

をウォルバーハンプトン

ご意見がありましたら教えてください。複数のテーブル

答えて

1

PHP MYSQL検索同じキーワードあなたは、あなたのデータを取得するためにSQLの機能を使用し、ないPHPの必要があります。

私が正しく理解していれば、いくつかのテーブルといくつかのカラムからデータを取得したいと思っています。そのようなあなたのクエリを変更し :そのような

SELECT 
    -- list of considered columns 
    col1, 
    col2, 
    col3 
    -- ... 
FROM 
    City 
JOIN 
    State ON State.state_id = City.state_id 
JOIN 
    Country ON Country.country_id = State.country_id 
WHERE 
    col1 LIKE '%keyword%' 
    OR col2 LIKE '%keyword%' 
    OR col3 LIKE '%keyword%' 
    -- ... 

を、あなたはあなたのキーワードを含む必要な列を取得します。例えば、テーブルの市が含まれている場合{「パリ」、「パラマタを」、「ポルト」}、パーキーワードを使用して、クエリSELECT name FROM city WHERE name LIKE '%Par%'はあなた{「パリ」、「パラマタ」}

ことで返されますあなたのデータベースで国、都市などのリンクを逆にする必要があります。国< - 州< - 都市

+0

ありがとうございました。 – SameasBefore

+0

私は3つすべての列を検索することはありません。私はそれが一致しているかどうかを確認してその列でリストを表示することはありません – SameasBefore

+0

例えば、それがすべてのものを停止して表示する場合は、それが都市に一致し、 – SameasBefore

関連する問題