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

Inner join

Estas en el tema de Inner join en el foro de Mysql en Foros del Web. hola tengo cuatro tablas (tabla1,puntos1,puntos2,puntos3) y tengo que relacionarlas con INNER JOIN por que tienen el campo dni en comun este es el codigo: @import ...
  #1 (permalink)  
Antiguo 30/01/2013, 13:52
 
Fecha de Ingreso: julio-2012
Mensajes: 106
Antigüedad: 11 años, 9 meses
Puntos: 2
Inner join

hola tengo cuatro tablas (tabla1,puntos1,puntos2,puntos3) y tengo que relacionarlas con INNER JOIN por que tienen el campo dni en comun este es el codigo:
Código MySQL:
Ver original
  1. SELECT nombre,apellido1,apellido2
  2. FROM tabla1
  3.     INNER JOIN puntos1 ON tabla1.dni=puntos1.dni
  4.     INNER JOIN puntos2 ON tabla1.dni = puntos2.dni
  5.     INNER JOIN puntos3 ON tabla1.dni= puntos3.dni
pero el problema es que al mostrarlo no muestra nada y el campo dni esta compartido en estas tablas. ¿que tengo mal? muchas gracias de antemano

Última edición por gnzsoloyo; 30/01/2013 a las 17:01 Razón: Codigo de programación no permitido en foros de Base de Datos
  #2 (permalink)  
Antiguo 30/01/2013, 14:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Inner join

Hola lenit:

La consulta no tiene nada de malo, entonces hay de dos sopas: o no tienes información que cumpla con los criterios que estás colocando o tienes un error pero no con la consulta, sino con el código para imprimir la información de la consulta.

te recuerdo que los temas de programación están prohibidos en este foro, (leer la sección de políticas) por lo que te pido que evites mezclar códigos de PHP o de cualquier otro lenguaje de programación.

te sugiero que ejecutes la consulta directamente en una consola de MySQL, para que veas si te está arrojando algún error... también te recuerdo que para que INNER JOIN muestre resultados el dni DEBE EXISTIR EN LAS CUATRO TABLAS QUE ESTÁS TRATANDO DE UNIR (tabla1, puntos1, puntos2 puntos3), si no existe en alguna de estas tablas NO TE ARROJARÁ RESULTADOS. En ese caso deberás probar con LEFT o RIGTH JOIN.

Saludos
Leo.
  #3 (permalink)  
Antiguo 30/01/2013, 14:26
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Inner join

Cita:
Iniciado por lenit Ver Mensaje
hola tengo cuatro tablas (tabla1,puntos1,puntos2,puntos3) y tengo que relacionarlas con INNER JOIN por que tienen el campo dni en comun este es el codigo:

Código MySQL:
Ver original
  1. SELECT nombre,apellido1,apellido2
  2. FROM tabla1
  3.     INNER JOIN puntos1 ON tabla1.dni=puntos1.dni
  4.     INNER JOIN puntos2 ON tabla1.dni = puntos2.dni
  5.     INNER JOIN puntos3 ON tabla1.dni= puntos3.dni
pero el problema es que al mostrarlo no muestra nada y el campo dni esta compartido en estas tablas. ¿que tengo mal? muchas gracias de antemano
pues yo he trabajado con inner join y lo he hecho asi (un ejemplo):

Código MySQL:
Ver original
  1. select t.nombre,
  2. t.apellido,  /*la T es una alias que le das a la tabla "tabla1" y debes de hacer esto en un solo select*/
  3. t.apellido2,
  4. p.puntoprueba,
  5. p2.puntoprueba2
  6. from tabla1 t
  7. inner join prueba1

Última edición por gnzsoloyo; 30/01/2013 a las 17:02 Razón: SQL mal etiquetado
  #4 (permalink)  
Antiguo 30/01/2013, 16:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Inner join

Veo alguna cosa más:
Cita:
SELECT nombre,apellido1,apellido2 FROM tabla1 INNER JOIN puntos1 ON tabla1.dni=puntos1.dni INNER JOIN puntos2 ON tabla1.dni = puntos2.dni INNER JOIN puntos3 ON tabla1.dni= puntos3.dni
Esta consulta sólo te mostraría nombre, apellido1, apellido2, en caso de devolver algún registro, claro. Pero no nos dices cómo guardas los puntos en las tablas puntos1, puntos2, puntos3, que son tablas y no campos. ¿Cuáles son sus campos y cómo guardas los puntos para cada cliente? La base no te devolverá nada que no le pidas y solo le has pedido nombre, apellido1, y apellido2. Si quieres sacar cuentas o sumas necesitamos saberlo, y eso dependerá de la naturaleza de los datos. Por otra parte, como te dice leonardo, si no todas las personas tienen puntos en las tres tablas deberías usar LEFT JOIN ...
  #5 (permalink)  
Antiguo 31/01/2013, 13:40
 
Fecha de Ingreso: julio-2012
Mensajes: 106
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Inner join

ya esta solucionado me faltaba poner los campos del inner join a mostrar en el SELECT junto con el nombre, apellido1 y apellido2 :)

Etiquetas: join, php, select, sql, tabla
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 22:19.