2012-03-19 6 views
1

나는 최선을 다해 설명하려고 노력할 것입니다.필터 테이블 WHERE 1 열 = 다른 테이블의 열

하나의 표에서 국가 이름이있는 드롭 다운이 있습니다. 누군가 캐나다라고 말하면 지구라는 두 번째 테이블에서 결과를 필터링하기 위해 두 번째 드롭 다운이 필요합니다. 여기

내가 내가 쿼리를 변경해야합니다 알고

<?php 
$query="SELECT * FROM location_region"; 

$result = mysql_query ($query); 
echo "<select id='province_select' name='province_select' class='province_select' style='width:540px' value=''></option>"; 

while($nt=mysql_fetch_array($result)){ 
echo "<option value=$nt[value]>$nt[name]</option>" 

} 
echo "</select>"; 
?> 

을 사용하고 코드이지만, 내가 좋아하는 뭔가를 할 수있다 :이 작동하지 않습니다

$query="SELECT * FROM location_region WHERE country EQUALS value FROM location_country"; 

, 그러나입니다 이것을 쓰는 다른 곳이 있습니까? 여기에 테이블 구조 게르손 Herczeg 경우 : 항상

편집으로 표 는 "location_region는"테이블 "location_country"에서

덕분에 열 "값"같아야한다 "나라"라는 이름의 열이

location_country 유사한 무언가이다 :

:

ID name   value 
1 Canada  CA 
2 Great Britain GB 
3 United States US 

location_region에 유사하다

+1

첫 번째 '선택'이 변경되면 서버에 페이지를 게시 하시겠습니까? 또는 두 번째'select '를 동적으로 채우도록 변경할 때 AJAX 호출을하고 있습니까? 코드 변경 내용을 구성하는 방법에 따라 다릅니다. – David

답변

2

예, 내부 조인이라고합니다. 지정된 열에서 일치하는 하나의 큰 행 모음을 효과적으로 제공합니다.

SELECT lr.* 
FROM location_region lr 
INNER JOIN location_country lc on lr.country = lc.country 
WHERE lr.country = <selected value from dropdown> 

선택한 값을 쿼리로 바꾸면 선택한 국가의 지역 테이블에서 모든 것이 제공됩니다.

그러나 지역 테이블에 드롭 다운의 값과 일치하는 국가 열이있는 경우 그 중에서 선택하기 만하면됩니다.

SELECT * 
FROM location_region 
WHERE country = <selected value from dropdown> 
+0

감사 브릿지, 나는 아직 조인을 다루지 않았다.하지만 이것은 이해가된다. 튜토리얼을 찾을 것이고, ID는 코드를 얻는다는 것을 알기 때문에 고마워한다. –

+0

그런데 왜 내가 조금 설명하려고 노력했는지 - 거기에는 다른 유형의 조인도 있습니다. 하나 또는 둘 모두의 테이블에서 모든 행을 필요로하는 경우에도 해당 테이블에 일치하는 것이 없더라도 모두 필요에 따라 다릅니다. . – Bridge

+0

안녕하세요 고마워요, 자습서를 통해 작동 ... 다소 ...그러나 이것은 나에게 이것을 설명 할 시간을내어 주셔서 감사합니다. –

0

당신이 당신의 두 테이블의 필드를 게시 할 필요가 전체 답을 잘하지만,이 종류의 뭔가해야

SELECT location_region.name FROM location_region LEFT JOIN location_country ON location_regions.country = location_country.value 
1

쿼리는 다음과 같이 쓸 수있다 :

$query="SELECT * FROM location_region, location_country WHERE location_region.country = location_country.value WHERE location_region.country = {USER INPUT}" 
+0

고맙습니다. 거의 모든 지역을 보여 주지만, 여러 국가의 지역을 가지고 있기 때문에 그 지역의 결과를 제한하는 방법이 있습니까? –

+0

예, 다른 where 절을 추가하여 국가를 검색 할 수 있습니다. 나는 나의 대답을 업데이트했다. – jasonlfunk

+0

제이슨 감사합니다. 나는 당신 같은 사람들 덕분에 빨리 배우고 있습니다. –

관련 문제