Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/01/2014, 07:20
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: GROUP BY en varios SELECT con UNION

Primera parte

Cita:
Es decir, que usar el símbolo = en lugar de LIKE consume menos recursos. ¿Y cuando use Match Against también uso el igual? Es que como has mencionado lo de la proximidad.
Te respondo yo, si a la primara parte y no a la segunda

Del manual de mysql...

Código pre:
Ver original
  1. mysql> SELECT id, body, MATCH (title,body) AGAINST
  2.     -> ('Security implications of running MySQL as root'
  3.     -> IN NATURAL LANGUAGE MODE) AS score
  4.     -> FROM articles WHERE MATCH (title,body) AGAINST
  5.     -> ('Security implications of running MySQL as root'
  6.     -> IN NATURAL LANGUAGE MODE);
  7. +----+-------------------------------------+-----------------+
  8. | id | body                                | score           |
  9. +----+-------------------------------------+-----------------+
  10. |  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
  11. |  6 | When configured properly, MySQL ... | 1.3114095926285 |
  12. +----+-------------------------------------+-----------------+
  13. 2 rows in set (0.00 sec)

No suelo usar ese tipo de indices pero donde vas a poner el igual o el like....


Segunda parte

Si era exactamente esa mi pregunta, y fijate que era una información que aún no habías dado.

De entrada usaria un condicional para convertir las categorias a algo ordenable

Por ejemplo

nuevo=1
semi-nuevos=2
viejos=3
raros=4

if(coche="nuevo",1,if(coche="semi-nuevos",2,if(coche="viejo",3,4))) as antiguedad

Luego podriamos hacer lo siguiente

Código MySQL:
Ver original
  1. SELECT id_coche,
  2. MIN(if(coche="nuevo",1,if(coche="semi-nuevos",2,if(coche="viejo",3,4))))  as antiguedad
  3. GROUP BY id_coche;

id_coche---------------antiguedad
BMW4-------------------1
Audi 5-----------------2
Mercedes 3---------------3
Opel 4-------------------1

ya tendriamos algo.... con tus datos de ejemplo esta claro que obtenemos el audi 5/semi-uevos/120

pero y si hay mas de un Audi 5/semi-uevos luego quieres el mas rápido?

Ahora deberias explicar como se entiende esto

Código MySQL:
Ver original
  1. (SELECT....LIMIT 100)
  2. (SELECT....LIMIT 100)
  3. (SELECT....LIMIT 100)
  4. LIMIT 100

Si del primer select salen cien registros no obtendrás ninguno del segundo....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.