Autor
|
Tema: Union de tablas (Leído 3,394 veces)
|
Ethgar
Desconectado
Mensajes: 56
|
Que tal, ahora con un problema que me surgio al unir dos tabas; les explico: tabla1: Id | Clave |Articulo 023 3337 PC 024 3337 Impresora 025 3337 Monitor 026 3337 Disco Duro
Tabla2: Id_Accesorios | Clave | Id_Articulo CableVGA | CableCorriente 85 3337 023 si si 86 3337 024 no si
En tabla1 guardo los artículos de un inventario y en la tablados guardo solo los artículos que tienen accesorios, el problema es que al querer imprimir una tabla con la descripción del articulo y la lista de accesorios, como resultado la consulta solo me arroja los dos registros (PC, Impresora). Esta es mi consulta: $accesorios = mysql_query("SELECT a.clave,a.Articulo,b.CableVGA,b.CableCorriente FROM Tabla1 as a INNER JOIN Tabla2 as b on a.Clave = b.Clave WHERE Clave = 3337"); lo que deseo es que me arroje los 4 registros aunque no estén los otros dos registros (Monitor, Disco duro) en la tabla2.
|
|
|
En línea
|
|
|
|
MinusFour
|
Dudo mucho si quiera que la consulta esa te funcione:
a.clave no existe, sería a.Clave. Lo mismo al final del WHERE debe ser a.Clave o b.Clave, de otra forma Clave es muy ambiguo.
|
|
|
En línea
|
|
|
|
Carloswaldo
Traductor
Moderador Global
Desconectado
Mensajes: 4.762
Nos reservamos el derecho de ban.
|
Lo que necesitas es un LEFT OUTER JOIN Pero antes que nada, una duda ¿por qué haces el join con "Clave" y no con "Id_Articulo"? Para mi quedaría algo así como SELECT a.Clave, a.Articulo, b.CableVGA, b.CableCorriente FROM Tabla1 AS a LEFT OUTER JOIN Tabla2 AS b ON a.Id = b.IdArticulo WHERE a.Clave = 3337
|
|
|
En línea
|
|
|
|
Ethgar
Desconectado
Mensajes: 56
|
Lo que necesitas es un LEFT OUTER JOIN Pero antes que nada, una duda ¿por qué haces el join con "Clave" y no con "Id_Articulo"? Para mi quedaría algo así como SELECT a.Clave, a.Articulo, b.CableVGA, b.CableCorriente FROM Tabla1 AS a LEFT OUTER JOIN Tabla2 AS b ON a.Id = b.IdArticulo WHERE a.Clave = 3337
Lo que pasa es que en mi tabla tengo cientos demismos articulos pero con diferente clave, lo que quiero es el resultado de la clave digao que la clave es un folio de una compra por decir algo, me interesa elresultado de esa compra y lo saco con la Clave, no se i e explique, gracias por tu respuesta, checare LEFT OUTER JOIN.
|
|
|
En línea
|
|
|
|
Ethgar
Desconectado
Mensajes: 56
|
Lo que necesitas es un LEFT OUTER JOIN Pero antes que nada, una duda ¿por qué haces el join con "Clave" y no con "Id_Articulo"? Para mi quedaría algo así como SELECT a.Clave, a.Articulo, b.CableVGA, b.CableCorriente FROM Tabla1 AS a LEFT OUTER JOIN Tabla2 AS b ON a.Id = b.IdArticulo WHERE a.Clave = 3337
Brother me resolviste el problema, me arroja los registros completos, muchas gracias, te llevas el crédito. Saludos!!
|
|
|
En línea
|
|
|
|
Carloswaldo
Traductor
Moderador Global
Desconectado
Mensajes: 4.762
Nos reservamos el derecho de ban.
|
Lo que pasa es que en mi tabla tengo cientos demismos articulos pero con diferente clave, lo que quiero es el resultado de la clave digao que la clave es un folio de una compra por decir algo, me interesa elresultado de esa compra y lo saco con la Clave, no se i e explique, gracias por tu respuesta, checare LEFT OUTER JOIN.
Aún así, eso ya lo estás haciendo cuando pones el "WHERE a.Clave = 3337", el JOIN debe ser con el ID del producto, o aún mejor... hacer el JOIN con los 2 valores.
|
|
|
En línea
|
|
|
|
|
|