DROP PROCEDURE IF EXISTS `vn`.`route_getTickets`; DELIMITER $$ $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`route_getTickets`(vRouteFk INT) BEGIN /** * Pasado un RouteFk devuelve la informaciĆ³n * de sus tickets. * * @param vRouteFk * @select InformaciĆ³n de los tickets */ SELECT * FROM ( SELECT t.id Id, t.clientFk Client, a.id Address, a.nickname ClientName, t.packages Packages, a.street AddressName, a.postalCode PostalCode, a.city City, sub2.itemPackingTypeFk PackingType, c.phone ClientPhone, c.mobile ClientMobile, a.phone AddressPhone, a.mobile AddressMobile, d.longitude Longitude, d.latitude Latitude, wm.mediaValue SalePersonPhone, tob.description Note, t.isSigned Signed, t.priority FROM ticket t JOIN client c ON t.clientFk = c.id JOIN address a ON t.addressFk = a.id LEFT JOIN delivery d ON d.ticketFk = t.id LEFT JOIN workerMedia wm ON wm.workerFk = c.salesPersonFk LEFT JOIN( SELECT tob.description, t.id FROM ticketObservation tob JOIN ticket t ON tob.ticketFk = t.id JOIN observationType ot ON ot.id = tob.observationTypeFk WHERE t.routeFk = vRouteFk AND ot.code = 'delivery' )tob ON tob.id = t.id LEFT JOIN( SELECT sub.ticketFk, CONCAT('(', GROUP_CONCAT(DISTINCT sub.itemPackingTypeFk ORDER BY sub.items DESC SEPARATOR ','), ') ') itemPackingTypeFk FROM ( SELECT s.ticketFk, i.itemPackingTypeFk, COUNT(*) items FROM ticket t JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk WHERE t.routeFk = vRouteFk GROUP BY t.id, i.itemPackingTypeFk )sub GROUP BY sub.ticketFk )sub2 ON sub2.ticketFk = t.id WHERE t.routeFk = vRouteFk ORDER BY d.id DESC LIMIT 10000000000000000000 )sub3 GROUP BY sub3.id ORDER BY sub3.priority; END$$ DELIMITER ; ALTER TABLE `vn`.`delivery` DROP COLUMN addressFk;