Home > Foro de SQL >

Debates de SQL > Usar left outer join

Usar left outer join

Escrito por Mauricio el 24/10/2007

Estimado amigo, esperando que se encuentre bien, usted es experto en consultas sql, le cuento mi problema:

Tengo esta consulta en un programa de vb6 con conexion access...

Sql = "SELECT TABLA1. REFERENCIA, TABLA1. STOCKF, TABLA2. REFERENCIA1, TABLA2. STOCKF1  FROM TABLA1 LEFT OUTER JOIN TABLA2 ON TABLA1. REFERENCIA = TABLA2. REFERENCIA1"

Muestra todos los datos de tabla1 y tabla2 sin importar que los datos de tabla1 no esten en tabla2, es

Decir tengo mi tabla1 con todos mis datos (productos de supermercado) y en tabla2 que son los productos

De la competencia no estan todos los productos que tengo en mi tabla1, ahora que pasa si quiero ir a

Otro super (tabla3) y comparar los productos ya sean menos? , necesito igual mostrar todos mis productos

De tabla1, los de tabla2, tabla3 y tabla4,  trato hacer otro left outer join con tabla3 on tabla1. Referencia = tabla3. Referencia, pero no resulta...




Ficheros adjuntos:
consulta

Citar  |  
Ver mensaje      

Escrito por Mauricio el 24/10/2007
No he podido hacer la consulta con dos left, a que se puede deber eso, alguien quien me pueda ayudar...

Citar  |  
Ver mensaje     

Monica Rivera
Washington, Estados ...
Escrito por Monica Rivera el 24/10/2007

Mauricio,


Puedes mandar la consulta que escribiste que incluyen las otras tablas?


Gracias,


Monica


Citar  |  
Ver mensaje     

Escrito por Mauricio el 24/10/2007

Hola, muchas gracias, la ide es tener todos mis productos mostrando todos los datos de la tabla1 aunque no esten en el resto de las tablas

TABLA1

1,2,3,4,5

TABLA2

1,2,5

TABLA3

1,3,4

QUE MUESTRE

T1 T2 T3

 1   1  1

2    2

3         3

4         4

5          5

Sql = "SELECT TABLA1. REFERENCIA,  TABLA1. NOMBRE, TABLA1. ESPECIAL, TABLA1. COSTO, TABLA1. PRECIO, TABLA2. PRECIO1, TABLA3. PRECIO2 FROM TABLA1 LEFT OUTER JOIN TABLA2 ON TABLA1. REFERENCIA = TABLA2. REFERENCIA LEFT OUTER JOIN TABLA3 ON TABLA1. REFERENCIA = TABLA3. REFERENCIA"

NOTA: Uso uso access en un programa con VB6


Citar  |  
Ver mensaje     

Escrito por Mauricio el 24/10/2007

Debo aclarar que estoy ocupando algunos nombres de objetos para hacer referencia a la consulta, ya que no es estacia por ej

Sql = " SELECT "  & label1. Caption &  . REFERENCIA.... " "


Citar  |  
Ver mensaje     

Monica Rivera
Washington, Estados ...
Escrito por Monica Rivera el 24/10/2007

Primero te aconsejo que escribas la sentencia directamente en Access y la ejecutes para comprobar que tu sintaxis es correcta. Revisando la sentencia que mandas, todo parece estar bien, pero aun asi, compruebalo antes de mandarla desde la aplicacion.

Segundo, es posible que en lugar de ejecutar la sentencia generada por la aplicacion, imprimas la sentencia en la pantalla para comprobar que esta construida correctamente?

Por ultimo, es un riesgo bien grande que construyas tus sentencias SQL a partir del input de los usuarios, ya que estos podrian ingresar cadenas que generen sentencias que dañen tu base de datos.


Saludos,


Monica


Citar  |  
Ver mensaje     

Escrito por Mauricio el 24/10/2007
GRACIAS, voy a ver que sucede y despues coloco el tema, lo que sucede son tablas que se ocupan solo una vez y se destruyen, ya que las genero para luego exportarlas a una planilla excel...

Citar  |  
Ver mensaje     

Monica Rivera
Washington, Estados ...
Escrito por Monica Rivera el 24/10/2007

En ese caso te recomendaria que vayas al foro de Access y obtengas informacion acerca de otras posibles soluciones. Tienen que haber opciones mas seguras, pero desafortunadamente, no soy experta en Access y no puedo recomendarte nada en ese terreno.


Buena suerte.


Monica


Citar  |  
Ver mensaje     

Snob
Venezuela
Escrito por Snob el 18/11/2007

Entiendo q tienes como referencia los productos de la tabla1, por lo tanto:

SELECT T1. CodProd, T1. Descrip, T1. Precio1, isnull(T2. Precio,0) as Precio2, isnull(T3. Precio,0) as Precio3, isnull(T4. Precio,0) as Precio4
FROM dbo. Tabla1 as T1
LEFT JOIN dbo. Tabla2 as T2
ON T1. CodProd=T2. CodProd
LEFT JOIN dbo. Tabla3 as T3
ON T1. CodProd=T3. CodProd
LEFT JOIN dbo. Tabla4 as T4
ON T1. CodProd=T4. CodProd

Por q usamos ISNULL? Porq si el registro en la tabla2 no existe, el valor q devolvera la consulta para cualquier campo de la tabla2 será NULL, por lo tanto si quisieramos listar unicamente los productos que NO existen en la tabla2, agregariamos a la consulta anterior lo siguiente:

WHERE T2. CodProd IS NULL

Si quisieramos listar los productos q existen en todas las tablas

WHERE T2. CodProd IS NOT NULL AND T3CodProd IS NOT NULL AND T4CodProd IS NOT NULL

Salu2





Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: protesis testicular sergas listas de contratacion programa arena examen psicosometrico concepto de gerencia educativa

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos