我有一个 php,它从表单接收一些值作为变量,我使用这些值进行查询并将它们显示在表格中。 PHP 代码是:
$sql1="SELECT via,codvia,cp,municipio,provincia,( 6371000 * acos(cos(radians($gslat)) * cos(radians(lat)) * cos(radians(lng) - radians($gslng)) + sin(radians($gslat)) * sin(radians(lat)))) AS distancia
FROM $tabla where municipio ='$gsmunicipio' HAVING distancia < 500 ORDER BY distancia";
$result = mysqli_query($con, $sql1);
echo "<div class='table-responsive'>";
echo "<table class='table'>
<thead class='thead-dark'>
<tr>
<th scope='col'>Vía</th>
<th scope='col'>CodVia</th>
<th scope='col'>Distancia</th>
</tr>
</thead>
<tbody>";
while ($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td scope='col'>" . $row['via'] . "</td>";
echo "<td scope='col'>" . $row['codvia'] . "</td>";
echo "<td scope='col'>" . $row['distancia'] . "</td>";
echo "</tr>";
}
echo "</tbody></table>";
echo "</div>";
它返回下一个数据:
via codvia distancia
ANTONIO DE LEYVA 00460 12.20611003690737
SANTA MARIA DE LA CABEZA 01064 230.34840588687064
ANTONIO DE LEYVA 00460 233.86739822576007
MARQUESA DE SILVELA 03899 287.57855871469
DOCTOR CARMENA RUIZ 01727 348.5000437937512
BALEARES 00699 430.2384750664121
ENRIQUE FUENTES 01968 463.78877067869473
SAN MAGIN 05512 479.92500262187957
ALEJANDRO SANCHEZ 00173 495.8582670209417
对于每个 codvia 值,我需要向另一个表(t2)发送查询,以从名为“secc”的列中获取其他值。 mysql 中的查询将是:
SELECT
DISTINCT(secc)
FROM t2
where
cpro=28 and cmum=079 and codvia in (00460,01064,00460,03899,01727,06312,00699,01968,05512,00173);
返回:
secc
2807911036
2807911037
2807911038
2807911039
2807911034
2807911035
2807911029
2807911024
2807911023
2807911022
2807911010
2807911011
2807911013
对于每个秒,我必须从表“t3”中获取另一个估价器。在mysql中测试的查询y是:
SELECT
Seccs,Total
FROM t3
where cprov=28 and cmun=079 and
Seccs in (2807911036,2807911037,2807911038,2807911039,2807911034,2807911035,2807911029,2807911024,2807911023,2807911022,2807911010,2807911011,2807911013);
并返回:
Seccs Total
2807911010 820
2807911011 823
2807911013 1493
2807911022 1538
2807911023 1332
2807911024 1425
2807911029 872
2807911034 1076
2807911035 1217
2807911036 1314
2807911037 1412
2807911038 1114
2807911039 2199
我需要帮助或只在一个查询中进行所有操作并将其放入我的 php 文件中,或者如何在 php 中从第一个结果中显示其他值。
首先,我从第一次查询中收到了 codvia。此 codvia 返回每个通道的秒数,并通过此秒我获得总计值。 我失踪了。
我并不是 100% 清楚你的架构到底是什么,但这应该可以帮助你弄清楚。
这个想法是您将需要从中获取数据的表“连接”在一起。也就是说,您在 t1 和 t2 中都有一个 codvia,因此您可以加入其中,以便合并所有结果。然后,您可以对 t2 和 t3 上的 secc 执行相同的操作。您还可以有多个条件来加入(我已从您的示例中添加了 cprov 和 cmum)。
SELECT
t1.via,
t1.codvia,
t1.cp,
t1.municipio,
t1.provincia,
(6371000 * acos(cos(radians($gslat)) * cos(radians(lat)) * cos(radians(lng) - radians($gslng)) + sin(radians($gslat)) * sin(radians(lat)))) AS distancia,
t2.secc,
t3.total
FROM
$tabla AS t1
LEFT JOIN
$tabla2 AS t2
ON
t2.codvia = t1.codvia
AND
t2.cprov = 28
AND
t2.cmum = 079
LEFT JOIN
$tabla3 AS t3
ON
t3.secc = t2.secc
AND
t3.cprov = t2.cprov
AND
t3.cmum = t2.cmum
WHERE
municipio ='$gsmunicipio'
HAVING
distancia < 500
ORDER BY
distancia;