|
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...
|
|
Escrito por
Monica Rivera
el 24/10/2007
Mauricio, Puedes mandar la consulta que escribiste que incluyen las otras tablas? Gracias, Monica |
|
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 |
|
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.... " " |
|
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 |
|
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...
|
|
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 |
|
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 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 |
|
Al escribir en el debate:
|