SQL - Dudas sobre JOIN

 
Vista:

Dudas sobre JOIN

Publicado por Ferran (3 intervenciones) el 28/05/2018 13:37:22
Buenas,

Tengo una duda sobre una consulta que he hecho en SQL que esta bien pero no sé el porque esta bien, porque mi lógica me dice que no debería de dar este resultado... Aqui os dejo la consulta:

1
2
3
4
5
6
7
SELECT cliente.id_cliente, oportunidad.id_oportunidad
FROM R_clitarcom
JOIN Comercial ON Comercial.id_comercial = R_clitarcom.id_comercial
JOIN Cliente ON Cliente.id_cliente = r_clitarcom.id_cliente
JOIN Tarea ON Tarea.id_tarea = R_clitarcom.id_tarea
JOIN Oportunidad ON Cliente.id_cliente = Oportunidad.id_oportunidad
JOIN Producto ON producto.id_producto = oportunidad.id_producto

Aqui viene lo que no entiendo, este JOIN:
JOIN Oportunidad ON Cliente.id_cliente = Oportunidad.id_oportunidad

Los demás los entiendo que estan bien. R_clitarcom es una relacion de 3 tablas que son Comercial, Cliente y Tarea, luego de eso quiero tambien que la tabla oportunidad que esta ligada a la tabla cliente se muestre el tipo de producto que esta en la tabla producto que esta ligada a oportunidad, no se si me explico.

Esta bien el JOIN? que el id_cliente de la tabla cliente tenga relación con una id primaria de la tabla oportunidad? Si no lo hago asi y hago que Cliente.id_cliente = oportunidad.id_cliente se duplican los resultados.
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

Dudas sobre JOIN

Publicado por Raymundo (3 intervenciones) el 28/05/2018 15:35:45
Buenas Ferran

Puedes probar con el Cliente.id_cliente = oportunidad.id_cliente poniendo un DISTINCT en el SELECT (evitándote duplicados en princpipio), es decir,

1
2
3
4
5
6
7
SELECT DISTINCT cliente.id_cliente, oportunidad.id_oportunidad
FROM R_clitarcom
JOIN Comercial ON Comercial.id_comercial = R_clitarcom.id_comercial
JOIN Cliente ON Cliente.id_cliente = r_clitarcom.id_cliente
JOIN Tarea ON Tarea.id_tarea = R_clitarcom.id_tarea
JOIN Oportunidad ON Cliente.id_cliente = Oportunidad.id_cliente
JOIN Producto ON producto.id_producto = oportunidad.id_producto

Un saludo
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

Dudas sobre JOIN

Publicado por Ferran (3 intervenciones) el 28/05/2018 16:18:25
Gracias por responder tan rapido.
Sí, ya lo probé eso, pero no funcionó... Yo creo que es algo que estan mal relacionadas las tablas para que las tareas puedan ser relaciones por oportunidades y clientes a la vez... es mi opinion, porque pone el total de registros de la tabla oportunidades.
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

Dudas sobre JOIN

Publicado por Ferran (3 intervenciones) el 28/05/2018 16:48:47
Otra vez yo, al final ya lo he solucionado, he cambiado la relación de las tres tablas en vez de relacionar cliente,comercial,tarea relaciono comercial,tarea,oportunidad, y a continuación relaciono cliente con oportunidad y con este cambio puedo filtrar de la manera que yo queria, tareas por clientes o por oportunidades sin ningun problema. Muchas gracias igualmente!
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