我正在根据两个交叉引用的MySQL查询的结果创建一个下拉选择表单,但是我无法正确地按字母顺序排序列表。
我从第一个表"list1“中获取一个ID号,但需要从第二个表"list2”中获取其名称,并按字母顺序显示它们。
我尝试了ORDER,但这在这两个查询中都没有意义。
<select name="select">
<?php
$sql = "SELECT DISTINCT id FROM list1";
$query = mysqli_query($connection, $sql) or die (mysqli_error());
while ($row= mysqli_fetch_array($query)) {
$id = $row["id"];
// *** get the ID name from second table ***
$sql2 = "SELECT * FROM list2 WHERE id='$id' ORDER BY name ASC LIMIT 1";
$query2 = mysqli_query($connection, $sql2) or die (mysqli_error());
while ($row2 = mysqli_fetch_array($query2)) {
$name = $row2["name"];
echo '<option value="'.$id.'">'.$name.'</option>';
} // end while
// *** end get name ***
} // end while
?>
</select>发布于 2014-10-15 07:14:54
只需将这两个查询合并为一个:
select col1, col2 etc
from list2 where list2.id in (SELECT DISTINCT id FROM list1)
order by name asc这给出了使用查询和后续子查询的相同列表,但如果一次执行,您可以根据需要对整个结果进行排序。
<select name="select">
<?php
$sql2 = " select col1, col2 etc
from list2 where list2.id in (SELECT DISTINCT id FROM list1)
order by name asc
";
$query2 = mysqli_query($connection, $sql2) or die (mysqli_error());
while ($row2 = mysqli_fetch_array($query2)) {
$name = $row2["name"];
echo '<option value="'.$id.'">'.$name.'</option>';
} // end while
?>
</select>请注意,在连接这样的表时,您可能不应该使用select *。选你想要的栏目。
https://stackoverflow.com/questions/26376572
复制相似问题