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

Problema al ordenar una consulta con OR

Estas en el tema de Problema al ordenar una consulta con OR en el foro de Mysql en Foros del Web. Hola a to2, Acudo al foro, porque no encuentro la manera de hacer una cosa que parece muy simple. Tengo esta consulta por ejemplo: SELECT ...
  #1 (permalink)  
Antiguo 28/08/2008, 15:42
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Problema al ordenar una consulta con OR

Hola a to2,

Acudo al foro, porque no encuentro la manera de hacer una cosa que parece muy simple.

Tengo esta consulta por ejemplo:

SELECT * FROM tabla WHERE NOMBRE LIKE '%mario%' OR NOMBRE LIKE '%sonic%'

Por defecto esta consulta me devuelve la ordenación natural en la que está en la base de datos mysql, o en su defecto si le pongo ORDER BY FECHA DESC, lo ordenará por fecha.

Pero y si lo que quiero es que, primero se muestren los resultados obtenidos por la palabra mario y luego por la palabra sonic?

Estoy pidiendo algo imposible?

Cualquier ayuda, o idea será bienvenida, gracias de antemano.

Un saludo.-
  #2 (permalink)  
Antiguo 28/08/2008, 16:56
Avatar de soy_rebeca  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema al ordenar una consulta con OR

Urameshix:

Por que no lo ordenas por NOMBRE?
  #3 (permalink)  
Antiguo 29/08/2008, 02:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Problema al ordenar una consulta con OR

No es posible por varias razones:

La consulta que puse es un ejemplo reducido, de hecho seria:

SELECT * FROM tabla WHERE NOMBRE LIKE '%mario%' OR DESCRIPCION LIKE '%mario%' OR TAGS LIKE '%mario%' OR NOMBRE LIKE '%sonic%' OR DESCRIPCION LIKE '%sonic%' OR TAGS LIKE '%sonic%'

O sea cada palabras se busca en 3 columnas diferentes de la tabla, y aun a pesar de que solo se buscase en "NOMBRE" el NOMBRE puede contener mario o sonic entremedio y no serviría de nada que lo ordenase alfabaticamente.

Por favor, necesito que alguien me diga si se puede hacer o no.

Un saludo
  #4 (permalink)  
Antiguo 29/08/2008, 03:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema al ordenar una consulta con OR

Si no te he entendido mal quieres hacer esto
(SELECT nombre, campo2, campo3 FROM tabla WHERE NOMBRE LIKE '%mario%' order by nombre)
UNION
(SELECT nombre, campo2, campo3 FROM tabla WHERE NOMBRE LIKE '%sonic%' order by nombre)

Si usas UNION ALL repetirá los registros, si usas union o union distinct no repetirá. Prueba a ver qué sale. Fíjate en que tienes que especificar los campos. Deben ser los mismos y en el mismo orden, y deben ser del mismo tipo. Piensa, además, que se trata de la misma tabla.

Última edición por jurena; 29/08/2008 a las 05:32
  #5 (permalink)  
Antiguo 29/08/2008, 07:56
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Problema al ordenar una consulta con OR

No era eso, pero tu respuesta me ha ayudado muchísimo. He usado la clausula UNION DISTINCT y solucioné mi problema.

Muchas gracias.-
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 06:36.