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

Duda con 2 Inner Join

Estas en el tema de Duda con 2 Inner Join en el foro de Mysql en Foros del Web. Hola, se me esta presentando el siguiente problema, alguien sabe que puede estar pasando? El problema comienza cuando agrego el 2do INNER JOIN para saber ...
  #1 (permalink)  
Antiguo 04/11/2011, 09:09
Avatar de redsnake80  
Fecha de Ingreso: noviembre-2011
Ubicación: Buenos Aires
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Duda con 2 Inner Join

Hola, se me esta presentando el siguiente problema, alguien sabe que puede estar pasando?
El problema comienza cuando agrego el 2do INNER JOIN para saber la 2da descripcion

Código:
"SELECT B.bfecha,BC.descrip,B.bdebe,B.bhaber,C.cfecha,CC.cconcepto,C.cdebe,C.chaber FROM " &
                  "resbanco as B INNER JOIN conbanco as BC ON B.bconcepto=BC.id_bconcep, " &
                  "rescontab as C INNER JOIN concontab as CC ON C.cconcepto=CC.id_cconcep " &
                  "WHERE B.bfecha=C.cfecha AND (B.bdebe=C.chaber OR B.bhaber=C.cdebe)"
Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 04/11/2011, 10:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda con 2 Inner Join

La cosa es sencilla:
Código MySQL:
Ver original
  1.      B.bfecha,
  2.      BC.descrip,
  3.      B.bdebe,
  4.      B.bhaber,
  5.      C.cfecha,
  6.      CC.cconcepto,
  7.      C.cdebe,
  8.      C.chaber
  9.  FROM
  10.      resbanco as B INNER JOIN conbanco as BC ON B.bconcepto=BC.id_bconcep,
  11.      rescontab as C INNER JOIN concontab as CC ON C.cconcepto=CC.id_cconcep
  12. WHERE B.bfecha=C.cfecha AND (B.bdebe=C.chaber OR B.bhaber=C.cdebe)
¿Ver esa coma que pusiste detrás de ON B.bconcepto=BC.id_bconcep? Bueno, no va. Si usas JOIN, sea cual fuere, no puedes usar la coma.
Lo que no me queda claro es cuál sería entonces la relación entre el primer par de tablas con el segundo, por lo que tomaré lo que pones en el WHERE:
Código MySQL:
Ver original
  1.      B.bfecha,
  2.      BC.descrip,
  3.      B.bdebe,
  4.      B.bhaber,
  5.      C.cfecha,
  6.      CC.cconcepto,
  7.      C.cdebe,
  8.      C.chaber
  9.  FROM
  10.      resbanco as B
  11.      INNER JOIN conbanco as BC ON B.bconcepto=BC.id_bconcep
  12.      INNER JOIN rescontab as C ON   B.bfecha=C.cfecha
  13.      INNER JOIN concontab as CC ON C.cconcepto=CC.id_cconcep
  14.      B.bdebe=C.chaber OR B.bhaber=C.cdebe
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/11/2011, 11:43
Avatar de redsnake80  
Fecha de Ingreso: noviembre-2011
Ubicación: Buenos Aires
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Duda con 2 Inner Join

Gracias gnzsoloyo!!! Funciona de maravillas :)

Aprovecho para una consulta mas, si quisiera agregar una columna que me indique el nro de registro, como deberia hacer?
Trate de usar rownum pero no logro adaptarlo para este caso
  #4 (permalink)  
Antiguo 04/11/2011, 12:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda con 2 Inner Join

Hola redsnake80:

La función rownum no existe en MySQL, esta es de Oracle, sin embargo hay algunos trucos para hacer las veces de esta función... checa este script:

Código MySQL:
Ver original
  1. mysql> create table TuTabla (descripcion varchar(10));
  2. Query OK, 0 rows affected (0.24 sec)
  3.  
  4. mysql> insert into TuTabla values ('uno'), ('dos'), ('tres'), ('cuatro');
  5. Query OK, 4 rows affected (0.12 sec)
  6. Records: 4  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select  * from TuTabla;
  9. +-------------+
  10. | descripcion |
  11. +-------------+
  12. | uno         |
  13. | dos         |
  14. | tres        |
  15. | cuatro      |
  16. +-------------+
  17. 4 rows in set (0.01 sec)
  18.  
  19. mysql> SELECT @rownum:=@rownum+1 rownum, TuTabla.descripcion
  20.     -> FROM (SELECT @rownum:=0) r, TuTabla;
  21. +--------+-------------+
  22. | rownum | descripcion |
  23. +--------+-------------+
  24. |      1 | uno         |
  25. |      2 | dos         |
  26. |      3 | tres        |
  27. |      4 | cuatro      |
  28. +--------+-------------+
  29. 4 rows in set (0.00 sec)

En lugar de TuTabla pondrías tu consulta, con un alias.

Dale un vistazo para ver si te sirve.

Saludos
Leo.
  #5 (permalink)  
Antiguo 04/11/2011, 12:34
Avatar de redsnake80  
Fecha de Ingreso: noviembre-2011
Ubicación: Buenos Aires
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Duda con 2 Inner Join

leonardo_josue, funciono perfecto!!
Habia visto sobre rownum pero me mareaba en donde poner FROM (SELECT @rownum:=0) r

Gracias a todos!!!

Etiquetas: join, select
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 17:58.