我正在尝试从mysql填充一些选择下拉列表,但每个下拉列表来自不同的表。 当我执行以下操作时:
$data_sql = mysql_query("SELECT * FROM countries");
while($data = mysql_fetch_assoc($data_sql)){
$countrylist .= '<option value="'.$data[country_iso].'">'.$data[country].'</option>';
}
一切正常。但是当我按照以下方式添加更多表时:
$data_sql = mysql_query("SELECT * FROM countries, states");
while($data = mysql_fetch_assoc($data_sql)){
$countrylist .= '<option value="'.$data[country_iso].'">'.$data[country].'</option>';
$statelist .= '<option value="'.$data[state_iso].'">'.$data[state].'</option>';
}
我的下降工作但每行重复3次。
答案 0 :(得分:0)
你偶然发现一个隐含的JOIN
,而你想要一个 UNION
SELECT * FROM countries
UNION
SELECT * states
您当前的查询(SELECT * FROM countries, states
)的作用如下:对于国家/地区的每一行,请将此国家/地区的数据与所有州相结合。
这意味着如果你有10个国家和10个州,那么总行数就是100.你自己很幸运,你在一张非常小的桌子上做了笛卡尔式的加入:)
您只想分别进行2次查询:尝试合并结果并不像2个单独的查询那样有效。