SQL - Ayuda SQL INNER JOIN duplica resultados!

   
Vista:

Ayuda SQL INNER JOIN duplica resultados!

Publicado por LechugaL (4 intervenciones) el 14/12/2015 11:06:48
La cosa es que estoy haciendo unas pruebas a la DB de una clinica veterinaria (caso de estudio de la universidad) pero al tratar de visualizar una ficha medica de una mascota me salen repetidos los datos :c, esta es la consulta:

SELECT NOMBREC, APELLIDOC, DOMICILIO, TELEFONOC,NOMBREM,ESPECIE,RAZA,SEXO,PESO,NOMBREV,APELLIDOV, FECHACONTROL,DESCRIPCIONCITA,
DESCRIPCIONMEDICACION,NOMBREMEDICAMENTO,DOSIS,FECHAINICIOMEDICACION,FECHAFINMEDICACION FROM cliente
INNER JOIN mascota ON cliente.RUTC=mascota.RUTC
INNER JOIN veterinario ON mascota.RUTV=veterinario.RUTV
INNER JOIN cita_medica ON veterinario.RUTV=cita_medica.RUTV
INNER JOIN receta ON mascota.CODMASCOTA=receta.CODMASCOTA

aca una foto del modelo fisico
Fisico

podrian decirme donde esta mal la consulta? se los agradeceria mucho!

PD: al pedir que me muestre el rut del cliente (RUTC) me dice que el dato es ambiguo xd alguno sabe por que?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda SQL INNER JOIN duplica resultados!

Publicado por Rafael (83 intervenciones) el 14/12/2015 11:18:27
Hola:

Como tal dudo que te salgan DUPLICADOS, lo que te esta pasando en principio es:

Seguro tienes por cada registro de Cliente, "N" Mascotas, por cada Mascota "N" Veterinarios, asu vez N citas medicas y por ultimo N recetas...

Luego lo logico es que por los datos que pides algunas columnas te aparezcan "repetidas" ejemplo el nombre de cliente tantas veces como mascotas, veterinarios, citas medicas y recetas tenga...

Ahora por otro lato si pides el RUTC y te dice que es ambigüo es que esta en mas de dos tablas ejemplo:
INNER JOIN mascota ON cliente.RUTC=mascota.RUTC
Cuando lo pones en el listado le tienes que decir de que tabla lo quieres una vez mas ejemplo: cliente.RUTC

¿Ahora bien con esta explicacion cuentanos que quieres hacer ?

Saludos

Pd Si la info te sirve a mi me sirve un +1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Ayuda SQL INNER JOIN duplica resultados!

Publicado por LechugaL (4 intervenciones) el 14/12/2015 11:30:48
bueno creo que entendi y gracias por la pronta respuesta, lo que quiero que me entrege son los datos de los clientes con sus respectivas mascotas que este posea (1 por cliente), asi mismo el veterinario acargo que estas posean, las citas medicas y las recetas prescritas.

Supongo que la consulta en sí es la que esta erronea, alguna ayuda para realizar la consulta que necesito?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda SQL INNER JOIN duplica resultados!

Publicado por Rafael (83 intervenciones) el 14/12/2015 14:38:28
Pues de acuerdo a tu enunciado es correcto lo que haces, asi como tambien es correcto lo que te muestra...

Vaya otro enfoque...

Cliente -> Juan (1 Registro)

Mascotas
Mascota -> Perro de Juan (1 Registro)

Veterinario -> Doctor del Perro de Juan (1 Registro)

Aqui si entiendo puede complicarse
Visita del dia 1 de Diciembre con el Doctor del Perro de Juan
Visita del dia 10 de Diciembre con el Doctor del Perro de Juan

Y lo peor te dan dos recetas por cada visita...
Receta para los primeros 5 dias de la Visita del dia 1 de Diciembre con el Doctor del Perro de Juan
Receta para los segundos 5 dias de la Visita del dia 1 de Diciembre con el Doctor del Perro de Juan
Receta para los primeros 5 dias de la Visita del dia 10 de Diciembre con el Doctor del Perro de Juan
Receta para los segundos 5 dias de la Visita del dia 10 de Diciembre con el Doctor del Perro de Juan

Asi como veras el dato JUAN lo tendras tantas veces como recetas tengas en este caso 4

Pero como te dije en el primer comentario de acuerdo a tu diagrama un cliente puede tener n mascotas, y este n medicos, con cada medico n visitas, y asu vez n recetas.

De tal modo que si solo buscas una consulta que te muestre todos los datos es correcto lo que haces y el resultado que te da es correcto.

Pero supongo que lo que necesitas es algo diferente, vaya por que a pesar de que estas viendo esto que te comento no estas convencido o crees que hay un error, luego entonces tu enunciado o solicitud es erronea, si ejemplificas mas o menos lo que quieres que haga tu consulta sera mas facil ayudarte.

Saludos

Pd Si la info te sirve a mi me sirve un +1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Ayuda SQL INNER JOIN duplica resultados!

Publicado por LechugaL (4 intervenciones) el 14/12/2015 14:55:52
Basicamente quiero que muestre 1 solo registro por mascota, cliente, etc.


2

En la foto hay 3 "Sebastian" y quiero que solo este 1, ya que "Sebastian" solo tiene una mascota, una cita, una receta. nose si me ago entender
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda SQL INNER JOIN duplica resultados!

Publicado por LechugaL (4 intervenciones) el 14/12/2015 15:13:14
me quede toda la noche por un cochino GROUP BY..... Gracias amigo por las respuestas! ya lo resolvi ;'c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar