Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Se pueden combinar todas estas consultas en una sola o es imposible?

Estas en el tema de Se pueden combinar todas estas consultas en una sola o es imposible? en el foro de Mysql en Foros del Web. En un archivo PHP tengo multiples consultas porque trabajo con multiples tablas, y con los datos que obtengo armo una <table></table> y muestro tales datos. ...
  #1 (permalink)  
Antiguo 02/05/2017, 12:36
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Se pueden combinar todas estas consultas en una sola o es imposible?

En un archivo PHP tengo multiples consultas porque trabajo con multiples tablas, y con los datos que obtengo armo una <table></table> y muestro tales datos. Estas consultas se podrian unir en una sola?? Si alguien sabe como quisiera me diga como es el codigo:

Código SQL:
Ver original
  1. SELECT * FROM compras ;
  2.  
  3. SELECT * FROM clientes WHERE idcliente = '$row[idcliente]'
  4.  
  5. SELECT * FROM pedidos_ventas WHERE idcompra = '$row[idcompra]'
  6.  
  7. SELECT * FROM mercaderias WHERE idmerc = '$rowped[idmercaderia]' LIMIT 1
Estas son las tablas que uso por las dudas

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `clientes` (
  2.   `idcliente` INT(10) NOT NULL AUTO_INCREMENT,
  3.   `nombre` VARCHAR(50) NOT NULL,
  4.   `apellido` VARCHAR(50) NOT NULL,
  5.   `domicilio` VARCHAR(50) NOT NULL,
  6.   `telefono` VARCHAR(50) DEFAULT NULL,
  7.   `movil` VARCHAR(50) DEFAULT NULL,
  8.   `dni` VARCHAR(10) NOT NULL,
  9.   `familiar` VARCHAR(50) NOT NULL,
  10.   PRIMARY KEY (`idcliente`)
  11. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
  12.  
  13. CREATE TABLE IF NOT EXISTS `compras` (
  14.   `idcompra` INT(7) NOT NULL AUTO_INCREMENT,
  15.   `idcliente` INT(7) NOT NULL,
  16.   `observacion` text NOT NULL,
  17.   `fecha_ingreso` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  18.   PRIMARY KEY (`idcompra`)
  19. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  20.  
  21. CREATE TABLE IF NOT EXISTS `entregas_ventas` (
  22.   `identrega` INT(11) NOT NULL AUTO_INCREMENT,
  23.   `idcompra` INT(11) NOT NULL,
  24.   `entrega` DOUBLE(7,2) NOT NULL,
  25.   `fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  26.   PRIMARY KEY (`identrega`)
  27. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  28.  
  29. CREATE TABLE IF NOT EXISTS `mercaderias` (
  30.   `idmerc` INT(7) NOT NULL AUTO_INCREMENT,
  31.   `cantidad` INT(5) NOT NULL,
  32.   `codigo` VARCHAR(20) NOT NULL,
  33.   `producto` VARCHAR(100) NOT NULL,
  34.   `preciofinal` DOUBLE(7,2) NOT NULL,
  35.   PRIMARY KEY (`idmerc`)
  36. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  37.  
  38. CREATE TABLE IF NOT EXISTS `pedidos_ventas` (
  39.   `idpedido` INT(7) NOT NULL AUTO_INCREMENT,
  40.   `idcompra` INT(7) NOT NULL,
  41.   `idmercaderia` INT(7) NOT NULL,
  42.   `kilo` DOUBLE(7,2) NOT NULL,
  43.   `precio` DOUBLE(7,2) NOT NULL,
  44.   PRIMARY KEY (`idpedido`)
  45. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Cita:
Editado: Codigo de programacion no permitido en foros de BBDD. Por favor, leer las reglas del subforo.

Última edición por gnzsoloyo; 02/05/2017 a las 13:57
  #2 (permalink)  
Antiguo 02/05/2017, 12:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Si se puede, para eso sirven los JOINS, ahora que datos son los que muestras? que uno no es adivino
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 02/05/2017, 12:49
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
Si se puede, para eso sirven los JOINS, ahora que datos son los que muestras? que uno no es adivino
Código HTML:
Ver original
  1. <table id="pagos">
  2.                     <thead>
  3.                         <tr>
  4.                             <th>Cliente</th>
  5.                             <th>Producto</th>
  6.                             <th>Kilo</th>
  7.                             <th>Precio</th>
  8.                             <th>Entrega</th>
  9.                             <th>Fecha ingreso</th>
  10.                             <th>Acción</th>
  11.                         </tr>
  12.                     </thead>
  13.                  </table>
  #4 (permalink)  
Antiguo 02/05/2017, 14:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

De nuevo con joins simples obtienes lo que necesitas, investigale un poco o quieres que te haga el query?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 03/05/2017, 03:52
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Como hago lo siguiente:
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `clientes` (
  2.   `idcliente` INT(10) NOT NULL AUTO_INCREMENT,
  3.   `nombre` VARCHAR(50) NOT NULL,
  4.   `apellido` VARCHAR(50) NOT NULL,
  5.   `domicilio` VARCHAR(50) NOT NULL,
  6.   `telefono` VARCHAR(50) DEFAULT NULL,
  7.   `movil` VARCHAR(50) DEFAULT NULL,
  8.   `dni` VARCHAR(10) NOT NULL,
  9.   `familiar` VARCHAR(50) NOT NULL,
  10.   PRIMARY KEY (`idcliente`)
  11. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
  12.  
  13. CREATE TABLE IF NOT EXISTS `compras` (
  14.   `idcompra` INT(7) NOT NULL AUTO_INCREMENT,
  15.   `idcliente` INT(7) NOT NULL,
  16.   `observacion` text NOT NULL,
  17.   `fecha_ingreso` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  18.   PRIMARY KEY (`idcompra`)
  19. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

idcompra-idcliente
1 - 1
2 - 3
3 - 5
4 - 0
...
idcliente-nombre-apelllido
1-pepe
2-juan
3-carlos
4-maria
5-oscar

Quiero hacer un SELECT * from compras que me devuelva esto
idcompra-nombre
1-pepe
2-carlos
3-oscar
4-ninguno

Esa consulta me puedes hacer porfa? ya estuve investigando el JOIN
  #6 (permalink)  
Antiguo 03/05/2017, 07:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Algo como eso :)

Código MySQL:
Ver original
  1. select t1.idcompra, t2.nombre from compras as t1
  2. join clientes as t2 on (t1.idcliente=t2.idcliente)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 03/05/2017, 07:41
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
Algo como eso :)

Código MySQL:
Ver original
  1. select t1.idcompra, t2.nombre from compras as t1
  2. join clientes as t2 on (t1.idcliente=t2.idcliente)
Perfecto, no era facil la consulta. Pero hay clientes que tienen indice 0 y quisiera que las compras con idcliente=0 tambien salgan, por eso te puse Ninguno, puede aparecer vacio no hay problema como seria?
  #8 (permalink)  
Antiguo 03/05/2017, 07:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Con un left join

Código MySQL:
Ver original
  1. select t1.idcompra, case when t2.idcliente is null then 'Ninguno' else t2.nombre end as nombre from compras as t1
  2. left join clientes as t2 on (t1.idcliente=t2.idcliente)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 03/05/2017, 11:06
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
Con un left join

Código MySQL:
Ver original
  1. select t1.idcompra, case when t2.idcliente is null then 'Ninguno' else t2.nombre end as nombre from compras as t1
  2. left join clientes as t2 on (t1.idcliente=t2.idcliente)
Te vuelvo a molestar, con esto que escribiste soluciono 2 de las 4 consultas que puse arriba:

Código SQL:
Ver original
  1. SELECT * FROM compras ;
  2.  
  3. SELECT * FROM clientes WHERE idcliente = '$row[idcliente]'

Como le agrego esta otra?

Código SQL:
Ver original
  1. SELECT * FROM pedidos_ventas WHERE idcompra = '$row[idcompra]'
La tabla
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `pedidos_ventas` (
  2.   `idpedido` INT(7) NOT NULL AUTO_INCREMENT,
  3.   `idcompra` INT(7) NOT NULL,
  4.   `idmercaderia` INT(7) NOT NULL,
  5.   `kilo` DOUBLE(7,2) NOT NULL,
  6.   `precio` DOUBLE(7,2) NOT NULL,
  7.   PRIMARY KEY (`idpedido`)
  8. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Aca puede haber varias mercaderias por pedido por eso idcompra(1,2,2,2,3,3,4...),
idpedido-idcompra-idmercaderia-kilo-precio
1-1
2-2
3-2
4-2
5-3
5-3
6-4
...
Estoy tratando de hacer todo lo que hago con varias consultas en 1 sola, pero realmente es muy complejo para mi, agradezco tu ayuda. Se ve asi al final:
  #10 (permalink)  
Antiguo 03/05/2017, 12:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Pues nada mas agregas la tabla al final y listo:


Código MySQL:
Ver original
  1. select t1.idcompra, case when t2.idcliente is null then 'Ninguno' else t2.nombre end as nombre, t3.* from compras as t1
  2. left join clientes as t2 on (t1.idcliente=t2.idcliente)
  3. left join pedidos_venta s t3 on (t3.id_compra=t1.id_compra)

Creo que no has leido.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 04/05/2017, 11:58
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
Pues nada mas agregas la tabla al final y listo:


Código MySQL:
Ver original
  1. select t1.idcompra, case when t2.idcliente is null then 'Ninguno' else t2.nombre end as nombre, t3.* from compras as t1
  2. left join clientes as t2 on (t1.idcliente=t2.idcliente)
  3. left join pedidos_venta s t3 on (t3.id_compra=t1.id_compra)

Creo que no has leido.....
Te vuelvo a molestar gracias por ayudarme. Ahora va quedando como quiero:

Código SQL:
Ver original
  1. SELECT compras.idcompra,
  2. CASE WHEN clientes.idcliente IS NULL
  3. THEN  'ninguno'
  4. ELSE CONCAT( clientes.nombre,  ',', clientes.apellido )
  5. END AS nombre,
  6. CASE WHEN pedidos_ventas.idmercaderia =  '-1'
  7. THEN  'Vianda saludable'
  8. WHEN pedidos_ventas.idmercaderia =  '-2'
  9. THEN  'Comida Sana'
  10. ELSE  '-'
  11. END AS mercaderia
  12. FROM compras
  13. LEFT JOIN clientes ON ( compras.idcliente = clientes.idcliente )
  14. LEFT JOIN pedidos_ventas ON ( pedidos_ventas.idcompra = compras.idcompra )
  15. ORDER BY compras.idcompra ASC
  16. LIMIT 0 , 30

Necesito en donde va esto ELSE '-' , en lugar del guion vaya el nombre de la mercaderia que obtengo con esta consulta (la ultima)
Código SQL:
Ver original
  1. SELECT * FROM mercaderias WHERE idmerc = '$rowped[idmercaderia]' LIMIT 1
  2.  
  3. CREATE TABLE IF NOT EXISTS `mercaderias` (
  4.   `idmerc` INT(7) NOT NULL AUTO_INCREMENT,
  5.   `cantidad` INT(5) NOT NULL,
  6.   `codigo` VARCHAR(20) NOT NULL,
  7.   `producto` VARCHAR(100) NOT NULL,
  8.   `preciofinal` DOUBLE(7,2) NOT NULL,
  9.   PRIMARY KEY (`idmerc`)
  10. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  #12 (permalink)  
Antiguo 04/05/2017, 12:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Código MySQL:
Ver original
  1. SELECT compras.idcompra,
  2. CASE WHEN clientes.idcliente IS NULL
  3. THEN  'ninguno'
  4. ELSE CONCAT( clientes.nombre,  ',', clientes.apellido )
  5. END AS nombre,
  6. CASE WHEN pedidos_ventas.idmercaderia =  '-1'
  7. THEN  'Vianda saludable'
  8. WHEN pedidos_ventas.idmercaderia =  '-2'
  9. THEN  'Comida Sana'
  10. ELSE  mercaderia.producto
  11. END AS mercaderia
  12. FROM compras
  13. LEFT JOIN clientes ON ( compras.idcliente = clientes.idcliente )
  14. LEFT JOIN pedidos_ventas ON ( pedidos_ventas.idcompra = compras.idcompra )
  15. left join mercaderia on (pedidos_ventas.idmercaderia=mercaderia.idmerc)
  16. ORDER BY compras.idcompra ASC
  17. LIMIT 0 , 30

Ves que no era imposible ;) solo era leer un poco sobre los joins........
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 04/05/2017, 14:27
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
Código MySQL:
Ver original
  1. SELECT compras.idcompra,
  2. CASE WHEN clientes.idcliente IS NULL
  3. THEN  'ninguno'
  4. ELSE CONCAT( clientes.nombre,  ',', clientes.apellido )
  5. END AS nombre,
  6. CASE WHEN pedidos_ventas.idmercaderia =  '-1'
  7. THEN  'Vianda saludable'
  8. WHEN pedidos_ventas.idmercaderia =  '-2'
  9. THEN  'Comida Sana'
  10. ELSE  mercaderia.producto
  11. END AS mercaderia
  12. FROM compras
  13. LEFT JOIN clientes ON ( compras.idcliente = clientes.idcliente )
  14. LEFT JOIN pedidos_ventas ON ( pedidos_ventas.idcompra = compras.idcompra )
  15. left join mercaderia on (pedidos_ventas.idmercaderia=mercaderia.idmerc)
  16. ORDER BY compras.idcompra ASC
  17. LIMIT 0 , 30

Ves que no era imposible ;) solo era leer un poco sobre los joins........
Si ahora quisiera usar el LIKE para ver si coincide con un valor que ingreso en un input $_POST['buscar'], ya sea por nombre del cliente, vianda, comida, o cualquier mercaderia??
  #14 (permalink)  
Antiguo 04/05/2017, 14:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Y al final hice yo el query, pues ponlo en el where donde mas

Código MySQL:
Ver original
  1. SELECT compras.idcompra,
  2. CASE WHEN clientes.idcliente IS NULL
  3. THEN  'ninguno'
  4. ELSE CONCAT( clientes.nombre,  ',', clientes.apellido )
  5. END AS nombre,
  6. CASE WHEN pedidos_ventas.idmercaderia =  '-1'
  7. THEN  'Vianda saludable'
  8. WHEN pedidos_ventas.idmercaderia =  '-2'
  9. THEN  'Comida Sana'
  10. ELSE  mercaderia.producto
  11. END AS mercaderia
  12. FROM compras
  13. LEFT JOIN clientes ON ( compras.idcliente = clientes.idcliente )
  14. LEFT JOIN pedidos_ventas ON ( pedidos_ventas.idcompra = compras.idcompra )
  15. left join mercaderia on (pedidos_ventas.idmercaderia=mercaderia.idmerc)
  16. where clientes.nombre like '%$consulta%' or mercaderia.nombre like '%consulta%'
  17. ORDER BY compras.idcompra ASC
  18. LIMIT 0 , 30

https://dev.mysql.com/doc/refman/5.7/en/join.html
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 04/05/2017, 14:42
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
Y al final hice yo el query, pues ponlo en el where donde mas

Código MySQL:
Ver original
  1. SELECT compras.idcompra,
  2. CASE WHEN clientes.idcliente IS NULL
  3. THEN  'ninguno'
  4. ELSE CONCAT( clientes.nombre,  ',', clientes.apellido )
  5. END AS nombre,
  6. CASE WHEN pedidos_ventas.idmercaderia =  '-1'
  7. THEN  'Vianda saludable'
  8. WHEN pedidos_ventas.idmercaderia =  '-2'
  9. THEN  'Comida Sana'
  10. ELSE  mercaderia.producto
  11. END AS mercaderia
  12. FROM compras
  13. LEFT JOIN clientes ON ( compras.idcliente = clientes.idcliente )
  14. LEFT JOIN pedidos_ventas ON ( pedidos_ventas.idcompra = compras.idcompra )
  15. left join mercaderia on (pedidos_ventas.idmercaderia=mercaderia.idmerc)
  16. where clientes.nombre like '%$consulta%' or mercaderia.nombre like '%consulta%'
  17. ORDER BY compras.idcompra ASC
  18. LIMIT 0 , 30

https://dev.mysql.com/doc/refman/5.7/en/join.html
Ya probe ponerlos ahi antes de escribirte esto y no funciona,me devuelve 0 registros por mas que haya coincidencia
  #16 (permalink)  
Antiguo 04/05/2017, 14:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

y que query estas usando?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #17 (permalink)  
Antiguo 04/05/2017, 14:59
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
y que query estas usando?
Código SQL:
Ver original
  1. SELECT compras.idcompra, CASE WHEN clientes.idcliente IS NULL
  2.      THEN 'ninguno' ELSE CONCAT(clientes.nombre, ',', clientes.apellido)
  3. END AS nombre, CASE WHEN pedidos_ventas.idmercaderia = '-1' THEN 'Vianda saludable' WHEN pedidos_ventas.idmercaderia = '-2' THEN 'Comida Sana'  ELSE mercaderias.producto END AS mercaderia,  pedidos_ventas.kilo, pedidos_ventas.precio  FROM compras
  4. LEFT JOIN clientes  ON (compras.idcliente=clientes.idcliente)
  5. LEFT JOIN pedidos_ventas ON (pedidos_ventas.idcompra=compras.idcompra)
  6. LEFT JOIN mercaderias ON (pedidos_ventas.idmercaderia=mercaderias.idmerc)  WHERE mercaderias.producto LIKE '%comida%' OR..... aca van los demas
  7. ORDER BY compras.idcompra ASC

Ahi tendria que coincidir con cualquiera de estos: si pongo solo vianda filtrar todos los que tengan esa palabra, o comida o cualquier nombre del producto. No me da ninguno error la consulta, pero retorna 0 registros
Código SQL:
Ver original
  1. CASE WHEN pedidos_ventas.idmercaderia = '-1' THEN 'Vianda saludable' WHEN pedidos_ventas.idmercaderia = '-2' THEN 'Comida Sana'  ELSE mercaderias.producto
  #18 (permalink)  
Antiguo 04/05/2017, 15:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

realiza el select sin el where, ve que registros regresa, y sobre esos ve poniendo las condiciones
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #19 (permalink)  
Antiguo 05/05/2017, 12:46
Avatar de Fernarey1810  
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Se pueden combinar todas estas consultas en una sola o es imposible?

Cita:
Iniciado por Libras Ver Mensaje
realiza el select sin el where, ve que registros regresa, y sobre esos ve poniendo las condiciones
Los WHERE están funcionando:

Código SQL:
Ver original
  1. WHERE CONCAT(clientes.nombre, ' ', clientes.apellido) LIKE '%com%' OR mercaderias.producto LIKE '%com%'
  2. ORDER BY compras.idcompra ASC

Pero no estan filtrando si hay coincidencia con los datos de los CASE. No se puede usar el LIKE con las variables que creo

case when clientes.idcliente is null then 'ninguno' else CONCAT(clientes.nombre, ',', clientes.apellido) end as nombre,case when pedidos_ventas.idmercaderia = '-1' then 'Vianda saludable' when pedidos_ventas.idmercaderia = '-2' then 'Comida Sana' else mercaderias.producto end as mercaderia

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:28.