2010-12-06 4 views
0

하나의 키워드로 4 개의 테이블을 검색하여 그 위치 아래에있는 모든 항목을 가져 오는 쿼리를 작성하려고합니다. 나라 - - 주 - 카운티 - 도시PHP MYSQL 여러 테이블에서 동일한 키워드 검색

예에 대한

나는 네 개의 테이블 이 영국 -> 잉글랜드 -> 웨스트 미들랜드 -> 버밍엄

내가 버밍엄, 월솔 아래의 항목을 포함하여 모든 항목을 볼 못해 웨스트 미들랜드에서 사용자 유형은 울버햄프턴 때

내가

$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']; 
    } 
} 
해낸이를

의견이 있으면 알려 주시기 바랍니다. 당신은 당신의 데이터가 아닌 PHP의를 얻기 위해 SQL 기능을 사용해야합니다 여러 테이블

답변

1

PHP MySQL의 검색 동일한 키워드.

정확하게 이해하면 여러 테이블과 여러 열의 데이터를 가져오고 싶습니다. 그런 식으로 쿼리를 변경 : 그런

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%' 
    -- ... 

을, 당신은 당신이 당신의 키워드를 포함하는 필요한 열을 얻을 것이다. 테이블 도시 키워드 하고, 쿼리를 사용하여 { '파리', 'paramatta', '포르투'}이 포함 된 경우 예를 들어, SELECT name FROM city WHERE name LIKE '%Par%' 당신에게 { '파리', 'paramatta'}

으로 돌아갑니다 방법, 국가, 도시 등의 링크는 데이터베이스에서 뒤로 나타내야합니다. 국가 < - 상태 < - 도시

+0

빠른 응답 감사합니다. – SameasBefore

+0

나는 3 개의 cols 모든 수색을하지 않을 것이다. 나는 일치하는 것을 확인한 다음 해당 열로 목록을 보여 주려고하지 않을 것입니다. – SameasBefore

+0

예를 들어 그 상태가 깨끗해 졌으면 그 모든 것을 멈추고 표시하십시오. 그러나 도시와 일치하면 그 도시를 표시하십시오. – SameasBefore

관련 문제