我会尽力解释这个问题。
我在一个表格中填写了国家/地区名称的下拉列表。当有人选择说加拿大时,我需要第二个下拉列表来过滤第二个名为regions的表格的结果。
这是我正在使用的代码
<?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";
这不起作用,但还有另外写这个吗?桌子 “location_region”有一个名为“country”的列,它应该等于“location_country”表中的“value”列
一如既往地谢谢
编辑:对于Gershon Herczeg,这里是表结构
location_country类似于:
ID name value
1 Canada CA
2 Great Britain GB
3 United States US
location_region类似于:
ID name value country
1 Alberta AB CA
2 Alabama AL US
3 British Columbia BC CA
答案 0 :(得分: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>
答案 1 :(得分:1)
查询可以这样写:
$query="SELECT * FROM location_region, location_country WHERE location_region.country = location_country.value WHERE location_region.country = {USER INPUT}"
答案 2 :(得分:0)
要获得完整的答案,您需要在两个表中发布字段,但它应该是这样的:
SELECT location_region.name FROM location_region LEFT JOIN location_country ON location_regions.country = location_country.value