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

Como se consulta un Máximo ???

Estas en el tema de Como se consulta un Máximo ??? en el foro de Bases de Datos General en Foros del Web. Hola, tengo esto en la Base de Datos: Soy novato en Sql y hos queria preguntar los siguiente: Como verán un proveedor puede tener muchso ...
  #1 (permalink)  
Antiguo 05/08/2005, 09:28
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Como se consulta un Máximo ???

Hola, tengo esto en la Base de Datos:



Soy novato en Sql y hos queria preguntar los siguiente:

Como verán un proveedor puede tener muchso comentarios asociados.

Cómo hago para seleccionar el Más reciente comentario (El comentario con el Máximo id) de cada uno de los proveedores ??

La salida sería así:

PROVEEDOR ................MAX ID COMENTARIO .............COMENTARIO

Hamburguesas L&L ................24 .............................LLamé al Jefe

Lacteos ROMA ......................27.......................... ... No contestaron



os agradezco Mucho.
  #2 (permalink)  
Antiguo 05/08/2005, 10:38
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Tienes varias maneras, por ejemplo:

SELECT max(comentarios.comentario_id),proveedores.proveed or_id FROM comentarios INNER JOIN proveedores ON comentarios.proveedor_id = proveedores.proveedor_id
GROUP by proveedores.proveedor_id

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 05/08/2005, 11:02
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
huy Maestro de Maestros, ha salido a la Primera !!!!!!!!!!!!! Donde aprendiste SQL ??? Recomiendame un Libro o algo que estoy con muchas ganas de Aprender.

De verdad muchas Gracias
  #4 (permalink)  
Antiguo 05/08/2005, 11:26
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Aprendí SQL en clase aunque suspendí la asignatura :,(

Si tienes ganas de aprender no te hacen falta libros, en la red tienes todo lo que puedas necesitas, empieza por www.mysql-hispano.org

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 05/08/2005, 11:30
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Un Favor mas

Una dificultad, mira, le puse un condicional:



SELECT max(comentarios.comentario_id),proveedores.proveed or_id
FROM comentarios
INNER JOIN proveedores ON
comentarios.proveedor_id = proveedores.proveedor_id

WHERE active='prospecto' AND sales_manager = 'Pedro Perez'

GROUP by proveedores.proveedor_id




la cuestión es que así no me muestra los otros 'prospectos' de Pedro Perez Que No tengan algún registro en comentarios... Y necesito mostrar estos también...

Tiene esto alguna Solución ???
  #6 (permalink)  
Antiguo 05/08/2005, 11:38
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Solo puedes usar campos que estén en alguna tabla incluida en el FROM ('active' y 'sales_manager' de dónde salen?)

SELECT max(comentarios.comentario_id),proveedores.proveed or_id
FROM (comentarios INNER JOIN proveedores ON comentarios.proveedor_id = proveedores.proveedor_id) INNER JOIN tabla ON proveedores.campo_fk = tabla.pk

WHERE tabla.active='prospecto' AND tabla.sales_manager = 'Pedro Perez'

GROUP by proveedores.proveedor_id

Saludos.

P.D.: incluye la estructura de estas tablas y sus relaciones igual que hiciste antes para que podamos entenderte mejor.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #7 (permalink)  
Antiguo 05/08/2005, 11:41
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Son de la tabla proveedores, y funciona correctamente, No sé si se pueda lo otro ???

SELECT max(comentarios.comentario_id),proveedores.proveed or_id
FROM (comentarios INNER JOIN proveedores ON comentarios.proveedor_id = proveedores.proveedor_id) INNER JOIN tabla ON proveedores.campo_fk = tabla.pk

WHERE proveedores.active='prospecto' AND proveedores.sales_manager = 'Pedro Perez'

GROUP by proveedores.proveedor_id
  #8 (permalink)  
Antiguo 05/08/2005, 11:45
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Para mostrar todos los registros de una tabla y solo aquellos en los que hay relación en la otra en vez de usar INNER JOIN puedes usar LEFT JOIN o RIGHT JOIN

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #9 (permalink)  
Antiguo 05/08/2005, 11:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Funciona Perfecto con RIGHT...Muchas Gracias de nuevo.
  #10 (permalink)  
Antiguo 05/08/2005, 11:50
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Lo de maestro de maestros me levantó el ego bastante... :)

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #11 (permalink)  
Antiguo 05/08/2005, 12:33
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Mira Así me devuelve el Max(comentarios.comentario_id), pero necesitaría que me devolviera también el comentario (Campo de Texto), correspondiente a ese comentario_id Gracias por tu ayuda Master...

SELECT max(comentarios.comentario_id),proveedores.proveed or_id
FROM (comentarios INNER JOIN proveedores ON comentarios.proveedor_id = proveedores.proveedor_id) RIGHT JOIN tabla ON proveedores.campo_fk = tabla.pk

WHERE proveedores.active='prospecto' AND proveedores.sales_manager = 'Pedro Perez'

GROUP by proveedores.proveedor_id
  #12 (permalink)  
Antiguo 06/08/2005, 10:44
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Has probado así:

SELECT max(comentarios.comentario_id),proveedores.proveed or_id,comentarios.comentario_id
FROM (comentarios INNER JOIN proveedores ON comentarios.proveedor_id = proveedores.proveedor_id) RIGHT JOIN tabla ON proveedores.campo_fk = tabla.pk
WHERE proveedores.active='prospecto' AND proveedores.sales_manager = 'Pedro Perez'
GROUP by proveedores.proveedor_id,comentarios.comentario_id

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #13 (permalink)  
Antiguo 06/08/2005, 11:32
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Gracias, pero ya lo he probado así y repite los registros, es decir como si seleccionara todos los registros y no el del último comentario.id:

Esto es lo que sale:


PROVEEDOR ................MAX ID COMENTARIO .............COMENTARIO

Hamburguesas L&L ................24 .............................LLamé al Jefe
Hamburguesas L&L ................25 .............................Segunda Llamada
Hamburguesas L&L ................26 .............................se envió el Catalogo


Lacteos ROMA ......................27.......................... ... No contestaron
Lacteos ROMA ......................28.......................... ... No estaban
  #14 (permalink)  
Antiguo 06/08/2005, 11:56
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Necesitaba ver la estructura de todas las tablas implicadas y más ejemplos de lo que sale de la consulta.

Haber si alguien nos echa una mano porque ya estoy medio perdido.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #15 (permalink)  
Antiguo 08/08/2005, 02:08
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Un tema importante es saber que gestor usas y si es Mysql, que versión (esto sólo funcionará a partir de la versión 4.1 de mysql).
Para obtener lo que quieres necesitas un gestor que admita subconsultas:
Código:
select b.*
from proveedores a left join comentarios b on a.proveedor_id = b.proveedor_id
where b.comentario_id = (select max(comentario_id) 
                                    from comentarios c 
                                    where c.proveedor_id=a.proveedor_id)
and a.active='prospecto' 
and a.sales_manager = 'Pedro Perez'
Espero que esto te ayude.
__________________
Estoy contagiado de Generación-I
  #16 (permalink)  
Antiguo 08/08/2005, 07:46
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Tengo Mysql 4.0.15
  #17 (permalink)  
Antiguo 09/08/2005, 04:36
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Pues con esa versión de mysql que tienes, lo que quieres hacer no es posible con una consulta sql directa. La única forma es programación. Si se puede sacar el id del comentario (ya te puso DJNelson como hacerlo), pero no el comentario propiamente dicho (campo cometario.comments).
Un saludo.
__________________
Estoy contagiado de Generación-I
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:04.