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

ayuda con inner join + group by

Estas en el tema de ayuda con inner join + group by en el foro de Mysql en Foros del Web. hola amigos de foros del web. hago un select de esta forma Código PHP: SELECT     solicitudacreditacion . id_solicitud          ,  escuela . nomb_largEscuela          ,  ...
  #1 (permalink)  
Antiguo 29/07/2009, 14:38
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 13 años, 9 meses
Puntos: 0
De acuerdo ayuda con inner join + group by

hola amigos de foros del web.
hago un select de esta forma
Código PHP:
SELECT
    solicitudacreditacion
.id_solicitud
        
escuela.nomb_largEscuela
        
solicitudacreditacion.estado_solicitud
        
institucion.nomb_smallInstitucion
        
escuela.nomb_largEscuela
        
tipodocumento.desc_tipoDocumento
        
documento.nomb_documento
        
documento.fecha_documento
        
tipodocumento.id_tipoDocumento
FROM solicitudacreditacion
INNER JOIN escuela 
        ON 
(solicitudacreditacion.cod_escuela escuela.cod_escuela)
INNER JOIN facultad 
        ON 
(escuela.cod_facultad facultad.cod_facultad)
INNER JOIN institucion 
       ON 
(facultad.cod_institucion institucion.cod_institucion)
INNER JOIN documento 
        ON 
(documento.id_solicitud solicitudacreditacion.id_solicitud)
INNER JOIN tipodocumento 
       ON 
(documento.id_tipoDocumento tipodocumento.id_tipoDocumento)
WHERE solicitudacreditacion.estado_solicitud IS NOT NULL
AND solicitudacreditacion.estado_solicitud != 'acreditado' 
pero no quiero que se repita el nombre de la escuela (escuela.nomb_largEscuela), y que me muestre el documento (tipodocumento.desc_tipoDocumento) pero que muestre el ultimo tomando referencia "tipodocumento.id_tipoDocumento", asi que agrego al select anterior
Código PHP:
SELECT
    solicitudacreditacion
.id_solicitud
    
escuela.nomb_largEscuela
    
solicitudacreditacion.estado_solicitud
    
institucion.nomb_smallInstitucion
    
escuela.nomb_largEscuela
    
max(tipodocumento.desc_tipoDocumento)
    , 
max(documento.nomb_documento)
    , 
max(documento.fecha_documento)
    , 
max(tipodocumento.id_tipoDocumento)
FROM solicitudacreditacion
    INNER JOIN escuela 
        ON 
(solicitudacreditacion.cod_escuela escuela.cod_escuela)
    
INNER JOIN facultad 
        ON 
(escuela.cod_facultad facultad.cod_facultad)
    
INNER JOIN institucion 
        ON 
(facultad.cod_institucion institucion.cod_institucion)
    
INNER JOIN documento 
        ON 
(documento.id_solicitud solicitudacreditacion.id_solicitud)
    
INNER JOIN tipodocumento 
        ON 
(documento.id_tipoDocumento tipodocumento.id_tipoDocumento)
WHERE solicitudacreditacion.estado_solicitud IS NOT NULL
AND solicitudacreditacion.estado_solicitud != 'acreditado'
GROUP BY solicitudacreditacion.id_solicitud
ORDER BY solicitudacreditacion
.id_solicitudtipodocumento.id_tipoDocumento DESC 
Me muestra todo correcto, menos documento.nomb_documento, que debe estar relacionado con max(tipodocumento.id_tipoDocumento), haber quien em puede ayudar, a afinar esta consulta
  #2 (permalink)  
Antiguo 29/07/2009, 17:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 9 meses
Puntos: 360
Respuesta: ayuda con inner join + group by

Cita:
Me muestra todo correcto, menos documento.nomb_documento, que debe estar relacionado con max(tipodocumento.id_tipoDocumento), haber quien em puede ayudar, a afinar esta consulta
Donde esta documento.nomb_documento en la segunda consulta?
casi no se entiende.

tal vez con:
INNER JOIN tipodocumento
ON (documento.id_tipoDocumento = (select max(id_tipoDocumento) from tipodocumento))
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 30/07/2009, 10:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 75
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: ayuda con inner join + group by

yo te puedo dar una mano pero me tenes que explicar un poco mas que queres obtener, de paso agarre tu codigo y lo modifique un poco para que sea mas claro, por si te interesa. Bueno te espero asi arreglamos esto, saludos


SELECT
S.id_solicitud,
E.nomb_largEscuela,
S.estado_solicitud,
I.nomb_smallInstitucion,
E.nomb_largEscuela,
max(T.desc_tipoDocumento),
max(D.nomb_documento),
max(D.fecha_documento),
max(T.id_tipoDocumento),
FROM solicitudacreditacion as S
INNER JOIN escuela as E
ON (S.cod_escuela = E.cod_escuela)
INNER JOIN facultad as F
ON (E.cod_facultad = F.cod_facultad)
INNER JOIN institucion as I
ON (F.cod_institucion = I.cod_institucion)
INNER JOIN documento as D
ON (D.id_solicitud = S.id_solicitud)
INNER JOIN tipodocumento as T
ON (D.id_tipoDocumento = T.id_tipoDocumento)
WHERE S.estado_solicitud IS NOT NULL
AND S.estado_solicitud != 'acreditado'
GROUP BY S.id_solicitud
ORDER BY S.id_solicitud, T.id_tipoDocumento DESC;
  #4 (permalink)  
Antiguo 03/08/2009, 02:56
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 13 años, 9 meses
Puntos: 0
De acuerdo Respuesta: ayuda con inner join + group by

esta es la consulta normal:
http://www.elarteencuero.com/todo.JPG
al querer usar order by sale
http://www.elarteencuero.com/filtrado.JPG
si te das cuenta en la primera linea aparece bien todo menos el archivo en el segundo cuadro, que debe ser el ultimo dependiendo id del tipo de documento en realidad deberia mostrar el ultimo dependiento el id por eso el max
. deberia aparecer como archivo resolucion pdf que es el ultimo perteneciente a es solicitud (id solicitud) que por ciento su tipo(id) es el de mayor valor deberia aparecer, el registro que deberia aparecer es elde la fila 13 de la primera imagen. haber si me das la mano con eso.
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 05:12.