php - 过滤表 WHERE 1 列 = 来自另一个表的列

标签 php mysql drop-down-menu

我会尽力解释这一点。

我有一个下拉列表,其中填充了一张表中的国家/地区名称。当有人选择加拿大时,我需要第二个下拉列表来过滤来自名为区域的第二个表的结果。

这是我使用的代码

<?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/

相关文章:

twitter-bootstrap - ng-grid headerRowTemplate 隐藏 Bootstrap 下拉菜单

php - 获取类别中的帖子位置

php - 如何在 MAC OS X 10.7 Lion 上安装多个 XAMPP 版本或多个 PHP 版本

mysql自动增量值没有按顺序更新

php - MySQL INSERT INTO 无声地失败而没有错误

html - 我应该在我的菜单中的什么地方添加过渡效果?

php - 填充下拉列表从不同的 MySQL 表中获取数据

php - 未找到基表或 View :1146 in symfony3

Php mysql 脚本返回 Null 而不是 "long"值

php - 在sql中使用连接 - 没有得到所有想要的结果