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

Query de una búsqueda no me hace del todo caso

Estas en el tema de Query de una búsqueda no me hace del todo caso en el foro de Mysql en Foros del Web. Veamos, Se trata de una busqueda de elementos por etiquetas Tengo: Elemento [id,nombre,fecha] y etiqueta [id,nombre,id_elemento,fecha] Bien, Digamos que quiero tres resultados diferentes: 1) con ...
  #1 (permalink)  
Antiguo 17/01/2011, 05:13
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 9 meses
Puntos: 13
Query de una búsqueda no me hace del todo caso

Veamos,

Se trata de una busqueda de elementos por etiquetas

Tengo: Elemento [id,nombre,fecha] y etiqueta [id,nombre,id_elemento,fecha]

Bien,

Digamos que quiero tres resultados diferentes:

1) con solo las etiquetas introducidas y ninguna más
2) con alguna más
3) con alguna menos

Bien, digamos que tengo problemas con el 1) , que , de momento estoy intentando así:


Código PHP:
SELECT b.id as id_deseada FROM elemento betiquetas c WHERE c.id_elemento b.id AND (c.nombre IN ('etiqueta','segunda_etiqueta')) AND (c.nombre NOT IN ('etiqueta1','etiqueta2','etiqueta3','etiqueta4','etiqueta5')) GROUP BY b.id HAVING COUNTc.id )=
El problema es que si escribo: 'etiqueta, segunda_etiqueta', me salen solo los elementos que tienen TODAS las etiquetas pero también resultados con etiqueta1 u otra que no he introducido...

Como puedo asegurarm de que se cumpla el primer IN y que el numero de etiquetas sea el que le paso a having count?

es decir que tenga todas las etiquetas buscadas y que el numero de etiquetas ( c.id ? ) del elemento sea igual al numero de etiquetas que vienen del formulario.
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #2 (permalink)  
Antiguo 18/01/2011, 08:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Query de una búsqueda no me hace del todo caso

Código MySQL:
Ver original
  1. SELECT elemento.id
  2. FROM elemento
  3.    INNER JOIN etiqueta
  4.         ON elemento.id = etiqueta.id_elemento
  5. WHERE etiqueta.nombre In ('etiqueta','segunda_etiqueta')
  6.          AND etiqueta.nombre Not In ('etiqueta1','etiqueta2','etiqueta3','etiqueta4','etiqueta5')
  7. GROUP BY elemento.id

Si?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 18/01/2011, 09:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 9 meses
Puntos: 13
Respuesta: Query de una búsqueda no me hace del todo caso

al final me salio, pregunta: cómo puedo hacerlo sin comparar con otras etiquetas? es decir, que solo contenta las que introduzca el usuario y solo tengan esa cantidad (así me evito preguntar si no es ninguna de las demás, que es lo que estoy haciendo hasta ahora)

-edit-

Gracias! por cierto :)
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #4 (permalink)  
Antiguo 19/01/2011, 01:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Query de una búsqueda no me hace del todo caso

Quita

Código MySQL:
Ver original
  1. AND etiqueta.nombre NOT IN (...)

en realidad es absolutamente innecesario
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: excluir, resultados, buscadores
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 12:45.