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

Como aplicar varios RIGHT JOIN en una sola consulta

Estas en el tema de Como aplicar varios RIGHT JOIN en una sola consulta en el foro de Bases de Datos General en Foros del Web. Hola a todos... Resulta que tengo que hacer una consulta en la cual estan implicadas 4 tablas. la tabla principal en registroatencion, y las otras ...
  #1 (permalink)  
Antiguo 05/09/2009, 10:51
 
Fecha de Ingreso: julio-2009
Mensajes: 84
Antigüedad: 14 años, 8 meses
Puntos: 1
Pregunta Como aplicar varios RIGHT JOIN en una sola consulta

Hola a todos...

Resulta que tengo que hacer una consulta en la cual estan implicadas 4 tablas. la tabla principal en registroatencion, y las otras 3 son foraneas que nos son obligatorias de llenar, por lo tanto al hacer la consulta necesito listar todos los registros de la tabla registro atencion independiente que tengan o no ese campo foraneo diligenciado. Intente esto:
Código:
SELECT registroatencion.idregistroatencion, diagnostico.nombrediagnostico, especialidad.nombreespecialidad, tipoegreso.nombretipoegreso
FROM diagnostico
RIGHT JOIN registroatencion ON diagnostico.iddiagnostico = registroatencion.iddiagnosticoegreso, tipoegreso
RIGHT JOIN registroatencion ON diagnostico.iddiagnostico.idtipoegreso = registroatencion.idtipoegresoegreso, especialidad
RIGHT JOIN registroatencion ON especialidad.idespecialidad = registroatencion.idespecialidad
Pero me sale #1066 - Not unique table/alias: 'registroatencion'

Asi que me gustaria saber si me pueden ayudar con la mejor forma para realizar esta consulta. Gracias de antemano por los comentarios.
  #2 (permalink)  
Antiguo 05/09/2009, 17:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como aplicar varios RIGHT JOIN en una sola consulta

debes usar alias en las tablas aunque sean las mismas.

esto se hace para diferenciar.

RIGHT JOIN registroatencion r1
RIGHT JOIN registroatencion r2
RIGHT JOIN registroatencion r3
etc...


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 06/09/2009, 00:40
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Respuesta: Como aplicar varios RIGHT JOIN en una sola consulta

Recomendaciones:
1.- Como ddiaz820427 te sugiere, usa alias para las tablas.
2.- Trata de dar un formato adecuado a tus consultas y se consistente, así es más fácil entenderlas.
Aunque puedes obtener los resultados que buscas usando la estructura que tienes, lo correcto es poner el "outer table" (la tabla que llamas "principal") inmediatamente después de la instrucción FROM. A partir de este punto, las tablas relacionadas casi siempre resultan naturalmente en un LEFT JOIN. Siguiendo este patrón, son muy pocas las veces que requerirás un RIGHT JOIN.

Supongo que esto es lo que deseas, pero podría estar equivocado, debido a que la cuarta línea de la consulta que has puesto es verdaderamente confusa.
Código:
SELECT        ra.idregistroatencion,
            di.nombrediagnostico,
            es.nombreespecialidad,
            te.nombretipoegreso
FROM        registroatencion AS ra
            LEFT JOIN    diagnostico AS di
                        ON    ra.iddiagnosticoegreso = di.iddiagnostico
            LEFT JOIN    tipoegreso AS te
                        ON    ra.idtipoegresoegreso = te.idtipoegreso
            LEFT JOIN    especialidad AS es
                        ON    ra.idespecialidad = es.idespecialidad
Saludos.
  #4 (permalink)  
Antiguo 07/09/2009, 07:11
 
Fecha de Ingreso: julio-2009
Mensajes: 84
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Como aplicar varios RIGHT JOIN en una sola consulta

Muchas gracias por las respuetsas, intentare cuadrar la consulta de la segunda forma para darles un mejor formato como me lo sugieren.
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 08:04.