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

Seleccionar datos de la db que no se repitan

Estas en el tema de Seleccionar datos de la db que no se repitan en el foro de Mysql en Foros del Web. Buenas, mi problema es el siguiente, lo que pasa es que tengo una tabla que cuenta con 4 columnas que identifican 4 caracteristicas de determinados ...
  #1 (permalink)  
Antiguo 27/12/2010, 15:08
 
Fecha de Ingreso: marzo-2006
Mensajes: 36
Antigüedad: 18 años
Puntos: 0
Seleccionar datos de la db que no se repitan

Buenas, mi problema es el siguiente, lo que pasa es que tengo una tabla que cuenta con 4 columnas que identifican 4 caracteristicas de determinados productos, es algo asi:

Tabla: articulos

Código MySQL:
Ver original
  1. * |  Nombre | Color1 | Color2  | Color3  |  Color4
  2. ---------------------------------------------------
  3. 1 |  Item1  |  Azu|  |   Rojo  |  Verde  | Amarillo
  4.  --------------------------------------------------  
  5. 2 |  Item2  |  Rojo  |  Verde  |  Blanco | Purpura
  6. ------------------------------ --------------------
  7. 3 |  Item3  |  Verde |   Azul  |  Rojo   |
  8. --------------------------------------------------
  9. 4 |  Item4  |  Rojo  | Celeste |         |

Lo que yo hago es que mediante un formulario anterior al ingreso a esta tabla se escoja en 2 input 2 colores para filtrar los resultados

Como haria para seleccionar a todos los items que solo tengan color azul y rojo.

En el imput se ingreso, por ejemplo:

$color1=rojo
$color2=azul

Pense en algo como:

Select * from articulos where Color1=$Color1 or Color2=$Color1 or Color3=$Color1 or Color4=$Color1 or...

y asi sucesivamente con el color 2 tambien pero el problema es que me va arrojar como resultado tambien los items que tengan aunque sea uno de los dos colores ya que uso OR.

Lo que yo quisiera es que solo me arrojen items que tengan rojo y azul nada mas.

Gracias de antemano, espero respuesta.
  #2 (permalink)  
Antiguo 27/12/2010, 15:44
Avatar de eaanillol  
Fecha de Ingreso: septiembre-2010
Ubicación: Bogota - Colombia
Mensajes: 25
Antigüedad: 13 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Seleccionar datos de la db que no se repitan

Hola como estas.

Si mal no entiendo creo que quieres que te salgan los items que tengan ambos colores. Si es así entonces intenta:
Código SQL:
Ver original
  1. SELECT *
  2. FROM articulos
  3. WHERE
  4.       (color1 = $color1 AND (color2 = $color2 OR color3 = $color2  OR color4 = $color2))
  5. OR (color1 = $color2 AND (color2 = $color1 OR color3 = $color1  OR color4 = $color1))
  6. OR (color2 = $color1 AND (color1 = $color2 OR color3 = $color2  OR color4 = $color2))
  7. OR (color2 = $color2 AND (color1 = $color1 OR color3 = $color1  OR color4 = $color1))
  8. OR (color3 = $color1 AND (color1 = $color2 OR color2 = $color2  OR color4 = $color2))
  9. OR (color3 = $color2 AND (color1 = $color1 OR color2 = $color1  OR color4 = $color1))
  10. OR (color4 = $color1 AND (color1 = $color2 OR color2 = $color2  OR color3 = $color2))
  11. OR (color4 = $color2 AND (color1 = $color1 OR color2 = $color1  OR color3 = $color1))


Lo que hace el where es probar todas las combinaciones posibles que se pueden dar en los items.

Eso es todo, pruebalo a ver si te sirve.
  #3 (permalink)  
Antiguo 29/12/2010, 09:44
 
Fecha de Ingreso: marzo-2006
Mensajes: 36
Antigüedad: 18 años
Puntos: 0
Respuesta: Seleccionar datos de la db que no se repitan

Muchas gracias por la ayuda, pero estoy tratando de entender la logica para hacer mas sentencias por mi cuenta. Por ejemplo si yo tendria otra variable mas que viene del input anterior, por ejemplo $color3, y solo tuviera para escoger entre 3 colores de la tabla(es decir elimino la columna color4) el select se realizaria asi?

Código SQL:
Ver original
  1. SELECT *
  2. FROM articulos
  3. WHERE
  4.       (color1 = $color1 AND (color2 = $color2 OR color3 = $color2 OR color2 = $color3 OR color3 = $color3))
  5. OR (color1 = $color2 AND (color2 = $color1 OR color3 = $color1 OR color2 = $color3 OR color3 = $color3))
  6. OR (color1 = $color3 AND (color2 = $color1 OR color3 = $color1 OR color3 = $color2 OR color3 = $color2))
  7. OR (color2 = $color1 AND (color1 = $color2 OR color3 = $color2 OR color1 = $color3 OR color3 = $color3))
  8. OR (color2 = $color2 AND (color1 = $color1 OR color3 = $color1 OR color1 = $color3 OR color3 = $color3))
  9. OR (color2 = $color3 AND (color1 = $color1 OR color3 = $color1 OR color1 = $color2 OR color3 = $color2))
  10. OR (color3 = $color1 AND (color1 = $color1 OR color2 = $color1 OR color1 = $color2 OR color2 = $color2))
  11. OR (color3 = $color2 AND (color1 = $color1 OR color2 = $color1 OR color1 = $color3 OR color2 = $color3))
  12. OR (color3 = $color3 AND (color1 = $color1 OR color2 = $color1 OR color1 = $color2 OR color2 = $color2))


Corrigeme si me equivoco por favor.

Muchas, pero muchas gracias de antemano.

Etiquetas: seleccionar
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 10:09.