elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Como procesar dos consulta en un while pero que muestren las que no están
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como procesar dos consulta en un while pero que muestren las que no están  (Leído 3,122 veces)
yoelrodguez

Desconectado Desconectado

Mensajes: 167


Es mejor, una amarga verdad que una dulce mentira


Ver Perfil WWW
Como procesar dos consulta en un while pero que muestren las que no están
« en: 16 Julio 2020, 01:11 am »

Tengo la siguiente situación: estoy usando dos consultas que responde a una misma relación pero la condición del Where es distinta. El resultado de estas dos consultas lo tengo que mostrar en una sola tabla, por lo que estoy ejecutando las dos consultas dentro de un while y uniendo los dos array con un array_marge().

El problema se me esta presentado cuando muestro los registro, ya que una consulta me devuelve más que la otra y solo se me muestra hasta la cantidad de registros menor y lo que necesito es que siempre se me muestren todos los registros por la consulta que más tenga. A continuación les dejo el código para ver si me pueden ayudar.

Gracias.

Código:
$query = $this->db->query("SELECT reporte_nomnia.*,
(SELECT CONCAT(`tipo_asist`.`nombre_cor`,' ',`tipo_asist`.`nombre`) FROM `tipo_asist` WHERE `tipo_asist`.`idempresa` = `reporte_nomnia`.`idempresa`  AND `tipo_asist`.`nombre_cor` = `reporte_nomnia`.`concepto`) AS codigo,
(SELECT COUNT(`asistencia`.`id`)  FROM asistencia INNER JOIN empleado ON asistencia.id_empl = empleado.id_empl INNER JOIN tipo_asist ON asistencia.id_tipoasist = tipo_asist.id WHERE `tipo_asist`.`nombre_cor` = `reporte_nomnia`.`concepto`  AND empleado.id_empl = `reporte_nomnia`.`idempleado` AND fecha_ent >= `periodo`.`fecha_inicio` AND fecha_ent <= `periodo`.`fecha_final`  GROUP bY `empleado`.`id_empl` ) As relojdias,
CONCAT(`empleado`.`nombre`,' ', `empleado`.`apellidos`) AS nomb
FROM reporte_nomnia INNER JOIN `empleado` ON `empleado`.`id_empl` = `reporte_nomnia`.`idempleado` INNER JOIN `periodo` ON `periodo`.`id` = `reporte_nomnia`.`idperiodo` WHERE 1 " . $search . $ordenby . " LIMIT " . $init . "," . $reg . "");
$query2 = $this->db->query("SELECT reporte_nomnia.dh AS dh2,reporte_nomnia.importe AS importe2
FROM reporte_nomnia INNER JOIN `empleado` ON `empleado`.`id_empl` = `reporte_nomnia`.`idempleado` INNER JOIN `periodo` ON `periodo`.`id` = `reporte_nomnia`.`idperiodo` WHERE 1 " . $search2 . $ordenby . " LIMIT " . $init . "," . $reg . "");

while ($list = $query->fetch_assoc() and $list2 = $query2->fetch_assoc()) {
$this->aplicacion[] = array_merge($list, $list2);
}
return $this->aplicacion;


En línea

mchojrin

Desconectado Desconectado

Mensajes: 47



Ver Perfil WWW
Re: Como procesar dos consulta en un while pero que muestren las que no están
« Respuesta #1 en: 10 Agosto 2020, 20:53 pm »

Se me ocurre que deberías poder resolver todo con una sola consulta usando LEFT JOIN


En línea

¿Docker te trae de cabeza? https://mautic.leewayweb.com/docker-101
vicram10

Desconectado Desconectado

Mensajes: 12


Vive la vida como yo lo hago Estilo HitenMitsurugi


Ver Perfil WWW
Re: Como procesar dos consulta en un while pero que muestren las que no están
« Respuesta #2 en: 11 Agosto 2020, 22:53 pm »

al realizar con Left Join como se menciono mas arriba, te permite traer la informacion aunque la otra tabla no contenga informacion de la primera tabla (lo deja nulo y sigue avanzando y trae igual en el resultado)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines