Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2017, 15:42
dgrvedado
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Consulta en MySQL

Hola Foro:

Tengo un dilema que deseo resolver a nivel de BD. Tengo un reporte en PHP que me funciona muy bien, pero cuando se carga demora un mundo para sacar la información. Considero que es por causa de que la consulta es amplia.

Bueno al grano quiero crear una consulta que traiga todos los datos de una y luego yo los ordeno.

Mi tabla es:
Código:
CREATE TABLE `salidas` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`no_sal_vuelta` INT(11) NOT NULL DEFAULT '0',
	`no_bus` INT(11) NOT NULL,
	`id_conductor` INT(11) NOT NULL,
	`id_ramal` INT(11) NOT NULL,
	`bol_ini_entero` INT(11) NOT NULL DEFAULT '0',
	`bol_fin_entero` INT(11) NOT NULL DEFAULT '0',
	`bol_ini_medio` INT(11) NOT NULL DEFAULT '0',
	`bol_fin_medio` INT(11) NOT NULL DEFAULT '0',
	`no_redondo` INT(11) NOT NULL,
	`modo` INT(11) NOT NULL,
	`id_horario` INT(11) NOT NULL,
	`fecha_salida` DATE NOT NULL,
	`hora_salida` TIME NOT NULL,
	`real_salida` TIME NOT NULL,
	`etapa1` TIME NOT NULL,
	`real1` TIME NOT NULL,
	`etapa2` TIME NOT NULL,
	`real2` TIME NOT NULL,
	`etapa3` TIME NOT NULL,
	`real3` TIME NOT NULL,
	`etapa4` TIME NOT NULL,
	`real4` TIME NOT NULL,
	`etapa5` TIME NOT NULL,
	`real5` TIME NOT NULL,
	`etapa6` TIME NOT NULL,
	`real6` TIME NOT NULL,
	`hora_llegada` TIME NOT NULL,
	`real_llegada` TIME NOT NULL,
	`km_inicial` DECIMAL(10,2) NOT NULL,
	`km_final` DECIMAL(10,2) NOT NULL,
	`rendido` INT(1) NOT NULL DEFAULT '0' COMMENT '0-No; 1-Si',
	`id_rendicion` INT(11) NOT NULL DEFAULT '0',
	`observacion` VARCHAR(350) NOT NULL COLLATE 'utf8_spanish2_ci',
	`user_add` VARCHAR(15) NOT NULL COLLATE 'utf8_spanish2_ci',
	`fecha_add` DATETIME NOT NULL,
	`user_edit` VARCHAR(15) NOT NULL COLLATE 'utf8_spanish2_ci',
	`fecha_edit` DATETIME NOT NULL,
	`del` INT(1) NOT NULL COMMENT '0-No; 1-Si',
	`user_del` VARCHAR(15) NOT NULL COLLATE 'utf8_spanish2_ci',
	`fecha_del` DATETIME NOT NULL,
	PRIMARY KEY (`id`)
)
COMMENT='Registro de Cada Salida de Buses de las Paradas'
COLLATE='utf8_spanish2_ci'
ENGINE=MyISAM
AUTO_INCREMENT=83338
;
Es una tabla de salidas de una empresa de transporte. Entonces por lo general los viajes tienen una IDA y una VUELTA que yo identifico en el campo modo (valores 1 o 2) y la vinculación está en el campo id --> no_sal_vuelta.

Bueno yo necesito mostrar en un sola línea los siguientes datos:
id, fecha_salida, no_bus, no_redondo, id_ramal (cuando es modo 1), hora_salida (modo 1), id_ramal (cuando es modo 2), hora_salida (modo 2)

Se me había ocurrido un SELECT así:
SELECT
sal.id,
sal.fecha_salida,
sal.no_bus,
sal.no_redondo,
ram.nombre AS ramal_ida,
sal.hora_salida,
...
...
...
FROM salidas sal
LEFT JOIN ramales ram
ON sal.id_ramal = ram.id
WHERE sal.del = 0
AND sal.fecha_salida = '2017-02-18'
AND sal.modo = 1
ORDER BY hora_salida ASC

Pero en donde están los "..." no se como vincular los datos de ese otro registro que me debe dar la información. No se si con un UNION o con un SELECT dentro de este SELECT... la verdad es que no se como enfrentar este problema. Y lo más sencillo que es que los datos están en la misma tabla.

Alguna sugerencia.