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

Unir tres tablas con JOIN

Estas en el tema de Unir tres tablas con JOIN en el foro de Mysql en Foros del Web. Hola tengo ese escenario como consulta a mi DB: Código: SELECT T1.`demo_eleccion_ideleccion` AS `Ideleccion`, T1.`idcandidatos` AS `Idcandidatos`, T1.`nombre` AS `Candidatos`, T1.`numero` AS `Numero_Tarjeton`, T1.`tarjeton` AS ...
  #1 (permalink)  
Antiguo 03/02/2018, 16:27
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 4 años, 5 meses
Puntos: 0
Pregunta Unir tres tablas con JOIN

Hola tengo ese escenario como consulta a mi DB:

Código:
SELECT T1.`demo_eleccion_ideleccion` AS `Ideleccion`,
T1.`idcandidatos` AS `Idcandidatos`,
T1.`nombre` AS `Candidatos`,
T1.`numero` AS `Numero_Tarjeton`,
T1.`tarjeton` AS `tarjeton`
From demo_candidatos T1
left Join demo_registro T2 ON T1.demo_eleccion_ideleccion = T2.urna
left Join demo_voting T3 ON T2.codigo_votante = T3.codigo
where T2.codigo_votante is null
El objetivo básicamente es que los campos de la tabla demo_candidatos solo se muestre cuando en la tabla demo_registro no existen los registros urna y codigo_votante, ambos en la misma fila.
Por lo tanto si tengo 3 urnas (U1 - U2 y U3) y 2 codigo_votante (cod1 - cod2) entonces en la tabla demo_registro tengo dos campos: Urna y Codigo
con dos filas así->
U1-cod1
U2-cod1

Entonces sólo debe mostrarme U3 para registrarlo en demo_registro como: U3-cod1. ya que aún falta registrar una Urna (U3) para el codigo_votante (cod1).
Esto sólo para cod1 y faltarían todos (U1-U2 y U3) en el caso de cod2, ya que este último aún no tiene ningun registro en la tabla demo_registro.

Última edición por c3media; 03/02/2018 a las 17:08 Razón: más claridad respecto al objetivo
  #2 (permalink)  
Antiguo 06/02/2018, 06:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.237
Antigüedad: 11 años, 9 meses
Puntos: 756
Respuesta: Unir tres tablas con JOIN

mande?? lo explicas con datos, pon datos de ejemplo y que quieres obtener para entenderlo mejor(tu te entiendes pero nosotros no)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 06/02/2018, 20:40
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 4 años, 5 meses
Puntos: 0
Pregunta Respuesta: Unir tres tablas con JOIN

Tabla de preguntas:


Tabla de opciones por pregunta:


Tabla de los votantes:
https://i.stack.imgur.com/Y8i9s.png

Tabla de registro_votos:


De acuerdo al escenario, este código debería dejar votar a los votantes que faltan (333333) ya que en la tabla registro_votos, sólo aparece el votante con código (111111):
¿Qué debo agregarle o quitarle a mi consulta para que me permita cargar las opciones?
Código HTML:
SELECT T1.`demo_eleccion_ideleccion` AS `Ideleccion`,
T1.`idcandidatos` AS `Idcandidatos`,
T1.`nombre` AS `Candidatos`,
T1.`numero` AS `Numero_Tarjeton`,
T1.`tarjeton` AS `tarjeton`
From demo_candidatos T1
left Join demo_registro T2 ON T1.demo_eleccion_ideleccion = T2.urna
left Join demo_voting T3 ON T2.codigo_votante = T3.codigo
where T2.codigo_votante is null
Gracias!
  #4 (permalink)  
Antiguo 07/02/2018, 08:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.237
Antigüedad: 11 años, 9 meses
Puntos: 756
Respuesta: Unir tres tablas con JOIN

Lo que pasa es que la tabla demo_registro nada mas tiene datos de un votante, deberias de unir la tabla donde tienes los datos de los votantes para que te pueda mostrar el votante faltante

Código MySQL:
Ver original
  1. SELECT T1.`demo_eleccion_ideleccion` AS `Ideleccion`,
  2. T1.`idcandidatos` AS `Idcandidatos`,
  3. T1.`nombre` AS `Candidatos`,
  4. T1.`numero` AS `Numero_Tarjeton`,
  5. T1.`tarjeton` AS `tarjeton`
  6. From demo_candidatos T1
  7. left Join demo_registro T2 ON T1.demo_eleccion_ideleccion = T2.urna
  8. left Join demo_voting T3 ON T2.codigo_votante = T3.codigo
  9. left join tabla_votantes T4 on (t3.codigo_votante=t4.codigo)
  10. where t4.codigo is null
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/02/2018, 14:05
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 4 años, 5 meses
Puntos: 0
Pregunta Respuesta: Unir tres tablas con JOIN

Hola, la tabla votantes se llama demo_voting y ya está siendo utilizanda en el Join.
He intentado lo que propones con esa tabla pero no funciona,

Gracias por como puedas ayudar!

Última edición por c3media; 07/02/2018 a las 15:31
  #6 (permalink)  
Antiguo 07/02/2018, 16:00
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 4 años, 5 meses
Puntos: 0
Respuesta: Unir tres tablas con JOIN

Una pequeña duda, solo es posible utilizar el operador = con el Join? Como se implementaria el operador Diferente para comparar codigo_votante en demo_registro y codigo en demo_voting? Gracias!
  #7 (permalink)  
Antiguo 09/02/2018, 08:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.237
Antigüedad: 11 años, 9 meses
Puntos: 756
Respuesta: Unir tres tablas con JOIN

Puedes utilizar cualquier operador, <>(diferente) =(igual) >(mayor) <(menor)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 10/02/2018, 09:16
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 4 años, 5 meses
Puntos: 0
Pregunta Respuesta: Unir tres tablas con JOIN

Bien, pero aún no he dado con la solución; muchas gracias en todo caso, continuaré estudiando MySQL!



La zona horaria es GMT -6. Ahora son las 10:08.