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

Como recuperar valores de 4 tablas diferentes

Estas en el tema de Como recuperar valores de 4 tablas diferentes en el foro de Mysql en Foros del Web. Buenos dias, les explico mi duda a ver si me pueden echar un cable. Tengo 4 tablas que son: Inscripcion: id, idevento, idcorredor, idcursa, idcaegoria, ...
  #1 (permalink)  
Antiguo 28/01/2009, 05:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años, 1 mes
Puntos: 0
Como recuperar valores de 4 tablas diferentes

Buenos dias, les explico mi duda a ver si me pueden echar un cable.

Tengo 4 tablas que son:

Inscripcion: id, idevento, idcorredor, idcursa, idcaegoria, pago i certificado.
Corredores: id, nombre, apellidos.
Cursas: id, nombre.
Categorias: id, nombre.

En la tabla Inscripciones se guarda la relación entre el corredor su categoria y su cursa.

La cuestion es que desearia recuperar todas las inscripciones de un determinado evento. Hasta aqui bien, es una peticion sencila, pero que utilizando la idcorredor, idcursa e idcategoria me devolviera el nombre y apellidos del corredor de cada inscripcion, el nombre de su categoria y el nombre de su cursa asi como el pago i certificado.

El objetivo final es contruir un array que contenga:

tabla['corredor_nombre']
tabla[corredor_apellidos]
tabla['cursa_nombre']
tabla['categoria_nombre']
tabla['inscripcion_pago']
tabla['inscripcion_certificado']

Lo estoy probando con UNION ALL, INNER JOIN ...IN con todo y no consigo que me salga. Me podeis ayudar porfavor.
  #2 (permalink)  
Antiguo 28/01/2009, 06:02
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, 5 meses
Puntos: 2658
Respuesta: Como recuperar valores de 4 tablas diferentes

Código sql:
Ver original
  1. SELECT
  2.     c.nombre corredor_nombre,
  3.     c.apellidos corredor_apellidos,
  4.     cu.nombre cursa_nombre,
  5.     ca.nombre categoria_nombre,
  6.     i.pago inscripcion_pago,
  7.     i.certificado inscripcion_certificado,
  8. FROM inscripcion i INNER JOIN
  9.     corredores c ON i.idcorredor = c.id INNER JOIN
  10.     cursas cu ON i.idcursa = cu.id INNER JOIN
  11.     categorias ON i.idcategoria = ca.id;

Esto te devolvería una tabla con los registros relacionados.
Atención: El INNER JOIN funciona como un AND. Debe haber forzosamente una coincidencia entre todas las tablas al mismo tiempo o de lo contrario no te devolverá registros. Esto significa que en la tabla inscripción ninguno de los id de las restantes debe ser NULL, y además deben ser FK de sus tablas. Si se da un registro con uno de los ID NULL, ese registro no se tendrá en cuenta para la 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)
  #3 (permalink)  
Antiguo 28/01/2009, 08:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Como recuperar valores de 4 tablas diferentes

MUCHAS GRACIAS!!!!

Ha funcionado a la perfección y creo que nunca se me hubieses ocurrido hacerlo asi. Muchas gracias de verdad!.

Pero 3 dudas muy concretas :
Si quiero incluir una insctruccion WHERE, ORDER BY o LIMIT, donde las puedo incluir??

Gracias por una respuesta tan acertada y tan rápida!!.

:)
  #4 (permalink)  
Antiguo 28/01/2009, 08:39
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, 5 meses
Puntos: 2658
Respuesta: Como recuperar valores de 4 tablas diferentes

Elimina el punto y coma final y encadena desde allí el WHERE.
Eso es mejor hacerlo en el momento de crear la consulta, de modo de poder construir diferentes opciones para el WHERE, según los campos que se necesiten filtrar.
__________________
¿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 28/01/2009, 10:57
 
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Como recuperar valores de 4 tablas diferentes

MUCHAS GRACIAS DE NUEVO!!

Gracias, funciona todo a la perfección. La verdad es que con tanto INNER JOIN me lio bastante y no tenia nada claro lo que estaba haciendo, asi que muchas gracias por tu ayuda y por responder con tanta urgencia. Seguro que esto me ayudara en el futuro a entender mejor este tipo de peticiones a sql.

Por cierto no se si es por la complicacion de la consulta a sql pero el paginator (http://jpinedo.webcindario.com/scripts/paginator/) no funciona con esta consulta en concreto asi que tendre que mirar de hacerme la paginación por mi cuenta.

Muchas gracias!. :)
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 00:41.