我会尽力解释这一点。
我有一个下拉列表,其中填充了一张表中的国家/地区名称。当有人选择加拿大时,我需要第二个下拉列表来过滤来自名为区域的第二个表的结果。
这是我使用的代码
<?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";
这行不通,但是还有其他地方可以写这个吗? table “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
最佳答案
是的,这称为内部联接 - 它会有效地为您提供与指定的一个或多个列匹配的行的大集合。
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>
关于php - 过滤表 WHERE 1 列 = 来自另一个表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775798/