Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Douglas Aguiar

Como receber mutiplos registros de um inner join

Recommended Posts

Bom dia galera do fórum...

 

Estou com uma dúvida que diz respeito a MySQL e PHP simultaneamente, mas acho que é mais a parte de banco de dados mesmo, por isso estou postando aqui.

 

Enfim, criei uma tabela `tb_os` que contém campos de uma Ordem de Serviço, cada ordem de serviço tem vários produtos, acho que o esse tipo de relacionamento é chamado de muitos pra muitos.

 

Minha dúvida seria como pegar esses vários produtos de cada uma dessas OS's...

$os = $pdo->query("SELECT os.*,
						designers.`nome` AS designer,
						lojas.`nome` AS loja,
						impressores.`nome` AS impressor,
						vendedores.`nome` AS vendedor
					FROM `tb_os` AS os
					left JOIN `tb_designers` AS designers
						ON os.`designer` = designers.`id`
					left JOIN `tb_lista_lojas` AS lojas
						ON os.`loja` = lojas.`id`
					left JOIN `tb_impressores` AS impressores
						ON os.`impressor` = impressores.`id`
					left JOIN `tb_vendedores` AS vendedores
						ON os.`vendedor` = vendedores.`id`
					ORDER BY os.`numero` ASC")->fetchAll();

Até agora usei o left porque na criação da OS o designer não é definido, só mais tarde quando o o designer "pega" ela que ele se identifica, mas preciso listar a quantidade de produtos de cada OS em uma tabela assim:

<table id="tabela-os" class="table table-bordered">
<thead>
<tr>
<th class="col-md-1">Selecione</th>
<th class="col-md-1">OS</th>
<th class="col-md-1">Loja</th>
<th class="col-md-1">Situação</th>
<th class="col-md-1">Data Entrada</th>
<th class="col-md-1">Itens Individuais</th>
<th class="col-md-1">Designer</th>
</tr>
</thead>
<tbody>

<?php
for ($i = 0; $i <= $qtd_os -1; $i++):
?>

<tr class="<?php switch($os[$i]['setor']){ case 'finalizado': echo 'success'; break;} ?>">
<td style="text-align:center;">
<input type="checkbox" name="id[]" id="id[]" value="<?php echo $os[$i]['id']; ?>">
</td>
<td><?php echo $os[$i]["numero"]; ?></td>
<td><?php echo $os[$i]["loja"]; ?></td>
<td><?php echo implode(' ', explode('_', $os[$i]["setor"])); ?></td>
<td><?php echo date('d/m/Y', strtotime($os[$i]["data_entrada"])); ?></td>
<td><?php echo $os[$i]["setor"]; ?></td>
<td><?php echo $os[$i]["designer"]; ?></td>
</tr>
<?php
endfor;			
?>
</tbody>
</form>
</table>

Só para constar, eu sei que é possível fazer uma consulta para cada os, mas como terei no futuro um volume enorme de registros na tabela tb_os seria um número absurdo de consultas para simplesmente contar os quantos produtos tenho em cada OS...

 

por enquanto está assim:

<table id="tabela-os" class="table table-bordered">
<thead>
<tr>
<th class="col-md-1">Selecione</th>
<th class="col-md-1">OS</th>
<th class="col-md-1">Loja</th>
<th class="col-md-1">Situação</th>
<th class="col-md-1">Data Entrada</th>
<th class="col-md-1">Itens Individuais</th>
<th class="col-md-1">Designer</th>
</tr>
</thead>
<tbody>

<?php
for ($i = 0; $i <= $qtd_os -1; $i++):

$n = $pdo->query("SELECT * FROM tb_lista_produtos WHERE os_id={$os[$i]['numero']}")->rowCount();

?>

<tr class="<?php switch($os[$i]['setor']){ case 'finalizado': echo 'success'; break;} ?>">
<td style="text-align:center;">
<input type="checkbox" name="id[]" id="id[]" value="<?php echo $os[$i]['id']; ?>">
</td>
<td><?php echo $os[$i]["numero"]; ?></td>
<td><?php echo $os[$i]["loja"]; ?></td>
<td><?php echo implode(' ', explode('_', $os[$i]["setor"])); ?></td>
<td><?php echo date('d/m/Y', strtotime($os[$i]["data_entrada"])); ?></td>
<td><?php echo $n; ?></td>
<td><?php echo $os[$i]["designer"]; ?></td>
</tr>
<?php
endfor;			
?>
</tbody>
</form>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.