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

Sentencia LEFT JOIN con tablas N:M

Estas en el tema de Sentencia LEFT JOIN con tablas N:M en el foro de Mysql en Foros del Web. Buenas tardes, Mi duda es la siguiente, estructure una tabla de pacientes, infecciosa y paciente_infecciosa, esto almacenar en mi tabla paciente_infecciosa los pacientes con sus ...
  #1 (permalink)  
Antiguo 29/03/2012, 09:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 101
Antigüedad: 15 años, 9 meses
Puntos: 0
Sentencia LEFT JOIN con tablas N:M

Buenas tardes,

Mi duda es la siguiente, estructure una tabla de pacientes, infecciosa y paciente_infecciosa, esto almacenar en mi tabla paciente_infecciosa los pacientes con sus respectivas infecciones

infecciosas
01-XXXX
02-YYYYY
03-ZZZZ

paciente
123-Paciente1
456-Paciente2
789-Paciente3

paciente_infecciosa
01-123
02-123

Aca indico que el Paciente1 tiene la infeccion XXXX y YYYY !!! Todo bien ...

El detalle es que yo quisiera listar un checkbox con todas las infecciosa, y las que padezca el paciente activo el check y las que no... pues no se activa... el chiste es que realizo mi sentencia y solo obtengo las infecciosas que si tiene el paciente pero no veo las que no tiene

Código MySQL:
Ver original
  1. select infecciosa.id, infecciosa.nombre
  2.  
  3. from paciente left join paciente_infecciosa on paciente.cedula = paciente_infecciosa.cedula
  4.      left join infecciosa on paciente_infecciosa.infecciosa = infecciosa.id
  5.      
  6. where paciente_infecciosa.cedula = "123"

Se puede realizar este left en tablas N:M , es decir en 2 tablas principales y una generada por estas dos ?

Gracias
__________________
Fiorellita
  #2 (permalink)  
Antiguo 29/03/2012, 10:25
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Sentencia LEFT JOIN con tablas N:M

Hola.

1. Al poner la clausula Where, le decis que solo muestre los que tengan cedula=123, por lo tanto no apareceran las infecciones que no esten relacionadas con esa cedula.

2. Si lo que quieres son todas las infecciones y que ademas puedas identificar cuales de esas tiene el paciente 123, tendrias que reestructurar la sentencia extrayendo los datos de la tabla infecciosas y uniendolas con el left a las otras tablas.

3. Usa alias a las tablas para facilitar la lectura y la misma estructuración de la sentencia.

ejemplo>

Código MySQL:
Ver original
  1. SELECT inf.idinfecciosas, inf.descripcion,p.cedula
  2. from infecciosas inf
  3. left join paciente_infecciosa pinf on pinf.idinfecciosa=inf.idinfecciosas
  4. left join paciente p on p.cedula=pinf.cedula

ojala y te pueda orientar un poco mas.

Etiquetas: join, left, select, sentencia, tabla, tablas
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 00:48.