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

problema al tratar de ejecutar consulta!!

Estas en el tema de problema al tratar de ejecutar consulta!! en el foro de Mysql en Foros del Web. hola foreros, espero esten bien, pues ando trabajando en un sistema de consulta y de nuevo teengo una pequeña duda que la verdad me pudo, ...
  #1 (permalink)  
Antiguo 10/03/2011, 08:35
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Pregunta problema al tratar de ejecutar consulta!!

hola foreros, espero esten bien, pues ando trabajando en un sistema de consulta y de nuevo teengo una pequeña duda que la verdad me pudo, me explico, la consulta es hacia dos tablas la tabla A contiene datos de un proyecto cualquiera y la tabla B contiene comentarios correpondientes al proyetos que se guardan en la tabla A, obviamente un proyecto puede tener varios comentarios, es decir, un registro en la tabla A que representa datos de un proyecto puede tener varios registro en la tabla B correpondientes a sus comentarios, en todos los comentarios el ultimo comentario contiene la palabra entregada, lo que no he podido hacer es consulta datos de la tabla A y tabla B donde el ultimo comentario no contenga la palabra entregada, es decir me trae datos de las dos tabla pero solo si en el ultimo comentario guardado de dicho proyecto no contiene la palabra entrgada!!...

he intentado con not like pero pues debo tener un error y me gui que en por el problema de que la tabla B tiene varios registros entonces crea comom una inconsistena debido a que la tabla A solo tiene uno, aqui dejo mi codigo:

Código MySQL:
Ver original
  1. SELECT CONCAT(usuario.nombres,' ', usuario.apellidos) as Registro, r.fecha_radicado, r.categoria, r.formulario, r.nro_radicado, r.proyecto from usuario, radicado r
  2.                                              WHERE
  3.                                              r.id_usuario = usuario.id_usuario and
  4.                                              r.categoria != 'ninguna' and
  5.                                              h.comentario not like '%entregada%'
  6.                                               r.formulario = 'completo' and
  7.                                               r.fecha_radicado between '2010-08-01' and '$fecha'

espero me puedan ayudar. De antemano agradezco por su atencion y por su tiempo
  #2 (permalink)  
Antiguo 10/03/2011, 09:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al tratar de ejecutar consulta!!

El problema no se puede resolver con una consulta simple, sino con una consulta con subconsulta.
Una opción sería:
Código MySQL:
Ver original
  1.     CONCAT(U.nombres,' ', O.apellidos) Registro,
  2.     r.fecha_radicado,
  3.     r.categoria,
  4.     r.formulario,
  5.     r.nro_radicado,
  6.     r.proyecto
  7.     usuario U
  8.     INNER JOIN
  9.     radicado r ON r.id_usuario = U.id_usuario
  10.      INNER JOIN
  11.     (SELECT * FROM comentarios_tablaA ORDER BY fecha DESC GROUP BY nro_radicado) H ON R.nro_radicado = H.nro_radicado
  12.     r.categoria != 'ninguna' AND
  13.     r.formulario = 'completo' AND
  14.     (r.fecha_radicado BETWEEN '2010-08-01' AND '$fecha')
  15.     AND
  16.     h.comentario NOT LIKE '%entregada%'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/03/2011, 10:14
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: problema al tratar de ejecutar consulta!!

hola gnzsoloyo, antes que nada muchas gracias po tu respuesta y tu tiempo... mira he estado viendo la estructura que me has posteado y he tratado de adaptarla a mi consulta pero pues no me dvuelve ningun dato, no saca error ni nada pero tampoco sale los datos que necesito los cuales son los proyectos que en el ultimo comentario que tengan en la tabla hoja de ruta no contenga la palabra entregada, no se si de pronto lo estare haciendo mal aqui dejo el codigo:
Código MySQL:
Ver original
  1.  
  2.         CONCAT(u.nombres,' ', u.apellidos) Registro,
  3.    
  4.           r.fecha_radicado,
  5.    
  6.           r.categoria,
  7.    
  8.           r.formulario,
  9.    
  10.           r.nro_radicado,
  11.    
  12.           r.proyecto
  13.    
  14.       FROM
  15.    
  16.    usuario u,
  17.  
  18.           radicado r
  19.  
  20.            inner join
  21.  
  22.           (SELECT * FROM hoja_ruta group by id_radicado desc ORDER BY fecha_registro DESC) h ON r.id_radicado = h.id_radicado
  23.  
  24.       WHERE
  25. r.id_usuario = u.id_usuario and
  26.  
  27.           r.categoria != 'ninguna' AND
  28.  
  29.           r.formulario = 'completo' AND
  30.  
  31.           (r.fecha_radicado BETWEEN '2010-08-01' AND '$fecha')
  32.  
  33.           AND
  34.  
  35.           h.comentario NOT LIKE '%entregada%'

te agradezco mucho por tu ayuda nuevamente y t tiempo
  #4 (permalink)  
Antiguo 10/03/2011, 10:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al tratar de ejecutar consulta!!

Lo que yo hice fue reescribir tu misma consulta de una forma más optimizada. No puedo saber si el uso que haces de las comas (JOIN implícito) está bien o mal, porque no tengo tu base ni tus datos, pero lo que yo te transcribí reemplaza esa parte por otra con la misma lógica, pero optimizada. Puede ser que ese sea el problema.
Trata de usar la que yo te paso, sin cambiarle más que los nombres de tablas o campos que estén mal escritos (tu consulta no incluye la tabla de comentarios, por ejemplo, por lo que no sé qué es "h").
Ten en cuenta que la coma para el JOIN es una mala práctica, que puede dar resultados erráticos si hay más campos que entre ambas tablas tengan el mismo nombre. Por eso las cambié por INNER JOIN, que es mejor.
Respecto a la falta de datos, el problema puede ser o bien por el uso de la coma, o porque las condiciones no se cumplen todas (el AND implica que sí o sí tienen que cumplirse todas), o bien alguno de los JOIN no está devolviendo datos porque la relación no se cumple.
De lo que sí podemos estar seguros es de que no hay errores de sintaxis.

Copia lo que te pasé, ponle bien el nombre de los campos y tablas, prueba y me cuentas qué pasó.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 10/03/2011, 10:55
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: problema al tratar de ejecutar consulta!!

nada el problema era mio jeje que pena contigo, pues ya me trae lo datos bien y todo lo unico que me falta es que me muestre el ultimo comentario debido a que me esta mostrando es el primero que se publico. voy a seguir intentando a ver que pasa cualquier cosa te aviso
MUCHAS GRACIAS POR TU COLABORACION!!
  #6 (permalink)  
Antiguo 10/03/2011, 12:02
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: problema al tratar de ejecutar consulta!!

hola gnzsoloyo mira estuve viendo y pues note que el problema esta en el subquery

"SELECT * FROM hoja_ruta GROUP BY id_radicado desc ORDER BY fecha_registro DESC"

no me trae el ultimo comentario publicado le ponga desc o asc en el orden es igual aparece el primer comentario.. intente poner despues del desc el limit 0,1, me funcionaba pponiendo solo esparte de la consulta :
"SELECT * FROM hoja_ruta GROUP BY id_radicado desc ORDER BY fecha_registro DESC limit 0,1"

me funciona por que me trae el ultimo comentario pero al ponerlo en la consulta entera ya la completa no me devuelve ningun valor y no se por que

espero me puedas guiar un poco en esto y disculpa la molestia.

de antemano muchas gracias
  #7 (permalink)  
Antiguo 10/03/2011, 12:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al tratar de ejecutar consulta!!

SI, perdón. Para que eso funcione no sólo tiene que estar ordenado, sino que además debe estar agrupado.
Ahora que lo marcas, la consulta es un poquitín más compleja que eso.
Basicamente, hay que descartar todos aquellos cuyo último comentario diga entegada, lo que sería:
Código MySQL:
Ver original
  1.   (SELECT *
  2.   FROM hoja_ruta
  3.   ORDER BY fecha_registro DESC) T1
  4. GROUP BY id_radicado desc;
porque el GROUP BY debe quedar después del ORDER BY, y en una sola sentencia no se puede hacer, ya que el GROUP va antes.
Entonces quedaría mas o menos así:
Código MySQL:
Ver original
  1.     CONCAT(U.nombres,' ', O.apellidos) Registro,
  2.     r.fecha_radicado,
  3.     r.categoria,
  4.     r.formulario,
  5.     r.nro_radicado,
  6.     r.proyecto
  7.     usuario U
  8.     INNER JOIN
  9.     radicado r ON r.id_usuario = U.id_usuario
  10.      INNER JOIN
  11.     (SELECT * FROM (SELECT * FROM hoja_ruta ORDER BY fecha_registro DESC) T1 GROUP BY id_radicado desc) H ON R.nro_radicado = H.nro_radicado
  12.     r.categoria != 'ninguna' AND
  13.     r.formulario = 'completo' AND
  14.     (r.fecha_radicado BETWEEN '2010-08-01' AND '$fecha')
  15.     AND
  16.     h.comentario NOT LIKE '%entregada%'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 10/03/2011, 12:38
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: problema al tratar de ejecutar consulta!!

Me dejas sin palabraaaas!!!!! Uyyyyy te lo agradezco demasiadooo en serio ha sido de gran AYUDA, voy a estudiar bastante para hacer ese tipo de consultas mas complejas. De nuevo muchas graciaaaas!!!!!!!
  #9 (permalink)  
Antiguo 10/03/2011, 12:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al tratar de ejecutar consulta!!

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 10/03/2011, 12:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al tratar de ejecutar consulta!!

Esta sería otra opción:
Código MySQL:
Ver original
  1.     CONCAT(U.nombres,' ', O.apellidos) Registro,
  2.     r.fecha_radicado,
  3.     r.categoria,
  4.     r.formulario,
  5.     r.nro_radicado,
  6.     r.proyecto
  7.     usuario U
  8.     INNER JOIN
  9.     radicado r ON r.id_usuario = U.id_usuario
  10.     r.categoria != 'ninguna' AND
  11.     r.formulario = 'completo' AND
  12.     (r.fecha_radicado BETWEEN '2010-08-01' AND '$fecha')
  13.     AND
  14.     R.nro_radicado NOT IN (SELECT nro_radicado FROM
  15.                                                 (SELECT nro_radicado, comentario
  16.                                                  FROM hoja_ruta
  17.                                                  ORDER BY fecha_registro DESC) T1
  18.                                           WHERE comentario NOT LIKE '%entregada%'
  19.                                           GROUP BY nro_radicado desc) ;
Pero tiene la desventaja que no puedes recuperar los comentarios que si están sin añadirle otro INNER JOIN a la misma tabla, con lo que en realidad la estarías leyendo dos veces...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 10/03/2011, 13:56
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: problema al tratar de ejecutar consulta!!

gnzsoloyo de verdad telo agradezco mucho, ha sido de gran, de mucha ayuda :) MUCHAS GRACIAS !!!!!!.....

Etiquetas: Ninguno
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 21:59.