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

Ayuda con consulta y JOIN

Estas en el tema de Ayuda con consulta y JOIN en el foro de Bases de Datos General en Foros del Web. Hola. Estoy haciendo una consulta en la que muestro datos de otras tablas por medio de JOIN. Resulta que tengo una tabla que se llama ...
  #1 (permalink)  
Antiguo 28/11/2009, 13:21
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 17 años, 4 meses
Puntos: 0
Ayuda con consulta y JOIN

Hola.
Estoy haciendo una consulta en la que muestro datos de otras tablas por medio de JOIN.
Resulta que tengo una tabla que se llama encabezado_guia_servicio y esta esta relacionada con la tabla cuerpo_guia_servicio y pie_guia_servicio por medio del campo numero_guia. En mi tabla pie_guia_servicio, tengo el campo rut_cliente como fk que lo traigo de la tabla personal. Ese campo rut_cliente es sin digito verificador pues cada uno es trabjado en su propio campo. (rut_personal, dv_personal).
Lo que estoy haciendo es traer los datos de todas las tablas pero el problema que se me presenta es que el campo, rut_cliente que esta en mi tabla pie_guia_servicio necesito mostrarlo con su digito verificador correspondiente (111111-1) y no (111111) como lo muestra ahora y nose como traerlo de manera completa (rut_personal-dv_personal)


Aqui mi consulta, el select lo hago a la tabla encabezado_guia_servicio

Código PHP:

SELECT eg
.numero_guia_servicio,eg.fecha_guia,
CONCAT(c.rut_cliente,"-",c.dv_cliente),
eg.id_contrato_cliente,
re.descripcion_relleno_sanitario,
est.descripcion_estado_guia,
cg.numero_linea,
cg.cantidad,
cg.volumen,
pg.nombre_recepcionista,
CONCAT(pg.rut_recepcionista,"-",pg.dv_recepcionista),
pg.hora_inicio_servicio,
pg.hora_fin_servicio,
pg.valor_guia,pg.observaciones 
FROM encabezado_guia_servicio eg 
INNER JOIN cliente c USING
(rut_cliente
INNER JOIN relleno_sanitario re USING(id_relleno_sanitario)
INNER JOIN estado_guia_servicio est USING(id_estado_guia
INNER JOIN cuerpo_guia_servicio cg USING(numero_guia_servicio)
INNER JOIN pie_guia_servicio pg USING(numero_guia_servicio
Yo ha modo de prueba realice la consulta colocando los parametro CONCAT(per.rut_personal,"-",per.dv_personal)
INNER JOIN personal per USING(rut_personal)

Pero me dice que no existe el campo rut_personal en la tabla encabezado_guia_servicio y es efectivo pues este campo esta en la tabla pie_guia_servicio.

Entonces, como puedo hacer para traer ese rut de manera completa que esta en la tabla personal, en el mismo select a la tabla encabezado_guia_servicio.


Gracias!
__________________
"La blanda respuesta quita la ira, Mas la palabra áspera hace subir el furor"
  #2 (permalink)  
Antiguo 30/11/2009, 08:15
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Ayuda con consulta y JOIN

Parece que esta linea esta demas:
CONCAT(pg.rut_recepcionista,"-",pg.dv_recepcionista)

Si es MySQL por que no haces la consulta en el foro de MySQL?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 30/11/2009, 08:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ayuda con consulta y JOIN

En MySQL las cláusulas ON y USING de los JOIN deben ir en el orden correcto de lectura de las tablas. Cuando pones un Tabla1 T1 INNER JOIN Tabla2 T2 USING (id) le estás indicando que el campo id existe en ambas tablas.
Lo que debes hacer es cambiar el orden de los OIN para asegurarte que la cadena de JOINS vaya obteniendo los campos necesarios por acumulación. Eso es: En un conjunto de 6 tablas, por ejemplo, el primer JOIN devuelve una tabla que es la junta de Tabla1, y Tabla2; el segundo join junta el resultado de las dos con la tabla3; el tercero el resultado de las tres con la tabla cuatro, y así hasta llegar a la última.

¿Se comprende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 15:37.