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

[SOLUCIONADO] Consulta a base de datos MYSQL-PHP condionada

Estas en el tema de Consulta a base de datos MYSQL-PHP condionada en el foro de Mysql en Foros del Web. Buenas tengo una consulta en mysql con la cual quiero mostrar datos específicos, este es un ejemplo: le solicito a mysql que me muestre todos ...
  #1 (permalink)  
Antiguo 03/02/2013, 23:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 3 meses
Puntos: 0
Consulta a base de datos MYSQL-PHP condionada

Buenas tengo una consulta en mysql con la cual quiero mostrar datos específicos, este es un ejemplo:

le solicito a mysql que me muestre todos los datos que tienen en colo rojo y lo muestro en una tabla en un bloque de 3 columnas

pero lo que necesito hacer es que si solo hay un datos con el color rojo me muestre al lado en los otros 2 espacios otros colores ejemplo:



hay tres datos con rojo :

Rojo Rojo Rojo


pero si solo 2 con rojo:

Rojo Rojo Verde

si hay 3 datos con rojo:

Rojo Rojo Rojo


Gracias
  #2 (permalink)  
Antiguo 04/02/2013, 15:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Consulta a base de datos MYSQL-PHP condionada

mndrake,
aclaranos un poco lo que tienes, los campos de tu tabla y sus valores, cómo haces la consulta, las variantes que pueden resultar y cómo deseas mostrarlo.
  #3 (permalink)  
Antiguo 04/02/2013, 16:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta a base de datos MYSQL-PHP condionada

Gracias Jurena te explico de nueno

campos en la tabla (ejemplo)

id color | 2 campos

cosulta:

realizo una consulta en la que muestro los resultados en 3 columnas, hasta ahi todo perfecto si por ejemplo le dijo que me tome solo los resultados que tienen el color rojo , me mostraría esto si hubieran al menos 3 con rojo:

id color
001 rojo
002 rojo
003 rojo


Pero si no hubieran los 3 con rojo necesito que no me deje el campo vació si no que me muestre otros colores en los campos que no hay rojo

ejemplo que solo 2 rojo hay

id color
001 rojo
002 rojo
004 verde

o

id color
001 rojo
002 rojo
005 azul

pero siempre los que encuentre rojo de primero


en el caso que solo hubiera un resultado con rojo me lo mostraría así:

id color
001 rojo
004 verde
005 azul

si hago esta consulta

"SELECT * FROM mitabla WHERE color='$color"

eso me mostraría solo un resultado si solo hubiera uno con rojo

"SELECT * FROM mitabla WHERE color='$color' OR color!='$color'"

si solo hay uno rojo y diez de otros colores me muestra los demas y no muestra el rojo.

resumen

necesito que si solo hay un resultado con rojo me lo muestre de primero y después los que sea si hay 2 entonces esos 2 de primero u de ultimo el que sea.


Gracias
  #4 (permalink)  
Antiguo 05/02/2013, 03:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Consulta a base de datos MYSQL-PHP condionada

Si lo que quieres es ordenar poniendo siempre los rojos por delante, usa esto
Código MySQL:
Ver original
  1. SELECT color FROM tutabla ORDER BY FIELD(`color`, 'rojo');
  #5 (permalink)  
Antiguo 05/02/2013, 08:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta a base de datos MYSQL-PHP condionada

Gracias jurena lo hice exactamente como me dijiste y no me funciona

me muestra los resultados en un orden extraño sin ninguna coincidencia entre ellos

y el problema es este si hago esta consulta:

Código PHP:

"SELECT * FROM tabla WHERE codigo!='$codigo' AND color='rojo' " 

pero lo que pasa es que si solo hay un registro con rojo solo me muestra uno y la idea es que si solo hay uno con rojo me muestre cualquier otro de segundo y tercero.

Gracias
  #6 (permalink)  
Antiguo 05/02/2013, 09:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Consulta a base de datos MYSQL-PHP condionada

perdona, no te puse bien el orden para lo que quieres. Puesto que los otros colores no importan, usa este orden
Código MySQL:
Ver original
  1. FROM tabla
  2. WHERE codigo != @codigo
  3. ORDER BY FIELD( `color` , 'rojo' ) DESC LIMIT 3
El problema es que al no indicar el orden de los otros colores, los otros colores pasan a ser nulos y el nulo se ordena antes que nada... De ahí que tengas que ordenar primero descendente, y luego, si quieres, puedes añadir otro orden.
Un único problema: saldrán datos, aunque no haya ningún rojo. Si debes evitar ese caso, primero tendrías que lanzar una consulta para comprobar que al menos hay un registro con color rojo.

Última edición por jurena; 05/02/2013 a las 10:43
  #7 (permalink)  
Antiguo 05/02/2013, 11:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta a base de datos MYSQL-PHP condionada

Muchísimas gracias jurena era justo lo que necesitaba,


gracias de verdad. te deseo lo mejor.

Etiquetas: mysql-php, sql, tabla
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 07:40.