gpt4 book ai didi

mysql - 查询3张表,将结果显示在一张表中

转载 作者:行者123 更新时间:2023-11-29 12:34:02 24 4
gpt4 key购买 nike

我有表Tabela ATabela BTabela C。我想要表 Consulta 上的结果:

Tabela A             Tabela B
---------------------------------
ID_A | Cidade ID_B | Cidade
---------------------------------
1 | Porto 1 | Preto
2 | Braga 2 | Verde
3 | Lisboa 3 | Amarelo
4 | Coimbra 4 | Branco

Tabela C
-------------------
ID_C | ID_A | ID_B
-------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 2
5 | 2 | 3
6 | 2 | 4
7 | 3 | 2
8 | 3 | 3
9 | 4 | 1
10 | 4 | 3
11 | 4 | 4

Tabela Consulta
-----------------------------------------------
ID_C | Cidade | Cor
-----------------------------------------------
1 | Porto | Preto; Verde;
2 | Braga | Preto; Verde; Amarelo; Branco
3 | Lisboa | Verde; Amarelo;
4 | Coimbra | Preto; Amarelo; Branco;

我有解决方案,但速度很慢,因为我有 15 000 条记录要显示。任何人都可以帮助我缩短时间,或者给我另一个解决方案。

<? php

$sql1 = "SELECT * FROM tabela_a order by id ASC";

$resultado = mysql_db_query($database, $sql1);

while ($registo = mysql_fetch_array($resultado)) {
$id_a = $registo["id"];
$cidade = $registo['cidade'];

echo $id_a; ?> : <? php
echo $cidade; ?> : <? php
$sql2 = "SELECT id_b FROM tabela_c where id_a=$id_a";
$resultado2 = mysql_db_query($database, $sql2);

$quantreg = mysql_num_rows($resultado2);
$i = 0;
while ($i < $quantreg) {
$registo2 = mysql_fetch_array($resultado2) or die(mysql_error());
$id_b = $registo2["id_b"];

$sql3 = "select * from tabela_b where id=$id_b";
$resultado3 = mysql_db_query($database, $sql3);
$registo3 = mysql_fetch_array($resultado3) or die(mysql_error());
$cor = $registo3["cor"];
echo $cor."; ";

$i++;
}
?>
</br>
<?php
}
?>

最佳答案

这只是joingroup by。您应该在单个查询中完成所有工作:

select a.id_a, a.Cidade, group_concat(b.cor separator '; ') as cor
from c join
a
on a.id_a = c.id_a join
b
on b.id_b = c.id_b
group by a.id_a, a.Cidade
order by a.id_a;

注意:我猜测表 b 中的列实际上称为 cor,而不是 cidade

关于mysql - 查询3张表,将结果显示在一张表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com