Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Union en BDE (https://www.clubdelphi.com/foros/showthread.php?t=12088)

eduarcol 05-07-2004 18:04:40

Union en BDE
 
a ver chicos, necesito una pequeña ayuda, estoy tratando de unis dos tablas en paradox por medio de un tquery en delphi 5, tengo dos tablas, pesca y produccion, yo quiero una resultante con todo lo de pesca y todo lo de produccion, esta tabla resultante la estoy tratando de hacer por medio de esta sentencia

Código:

Select * from "pesca" union Select * from "produccion"
pero me lanza una excepcion Type Mismatch, sera que el BDE no soporta esta instruccion o es que me falta algo??.

La estuve haciendo por un join pero me la documentacion que he encontrado dice que esa clausula se utiliza para unir tablas con un campo en comun


Cualquier ayuda se los agradezco :D

roman 05-07-2004 18:09:06

Joins y Unions son dos cosas distintas. La primera une columnas y la segunda une filas. ¿Cuál es la que quieres?

// Saludos

eduarcol 05-07-2004 18:18:33

Parece que recopile mal la informacion :(

Hasta donde pude entender con union lograba unir el resultado de dos select sin importar campos en comun, o sea, simplemente el select 1 y el select 2 los muestra en una sola tabla o cursor, eso es lo que quiero.

por poner un ejmplo:
Código:

resultado de la tabla A
Fecha      Pesca
11/05        1500
12/05        1700

Código:

resultado de la tabla b
Fecha      Harina  Aceite
11/05        250      120
12/05        400      345

esto lo quiero montar en un reporte donde cada linea detalle debe tener el campo Pesca de la Tabla A y los campos harina y aceite de la B

quise hacerlo por medio de SQl pero me da los inconvenientes de arriba

roman 05-07-2004 18:27:43

¿
Código SQL [-]
select A.Fecha, A.Pesca, B.Harina, B.Aceite
from A, B
where A.Fecha = B.Fecha
?

// Saludos

roman 05-07-2004 18:30:58

Una cosa: ni joins ni union pueden servirte para unir cualquier cosa. Un join necesariamente implica igualdad del número de filas (a menos que uses un left o right join para suplir filas restantes) y un union implica igualdad en el número de columnas (y claro está que deberán ser del mismo tipo)

// Saludos

eduarcol 05-07-2004 18:37:17

Ok ahora si me queda claro el error, gracias Roman, entonces creo que debere realizar una tabla temporal, porq necesito un campo de la primera y un campo de la segunda, y eso que me habias recomendado

Código SQL [-]
select A.Fecha, A.Pesca, B.Harina, B.Aceite
from A, B
where A.Fecha = B.Fecha

no me sirve por q si un registro aparece en una tabla y no en la otra no me lo va a reportar


Gracias por aclararme la duda

roman 05-07-2004 18:40:14

Cita:

Empezado por eduarcol
no me sirve por q si un registro aparece en una tabla y no en la otra no me lo va a reportar

Para eso son los inner joins (left, right etc.) como te mencione antes, para incluir registros aun cuando no se encuentren en la otra tabla.

eduarcol 05-07-2004 18:44:40

ok, si claro :D fue un error de lectura mio

Cita:

Empezado por roman
Un join necesariamente implica igualdad del número de filas (a menos que uses un left o right join para suplir filas restantes)

en vez de suplir entendi suprimir, pues ni modo ahora a investigar un poco sobre las joins :D

__marcsc 05-07-2004 18:47:26

Cita:

Empezado por roman
Para eso son los inner joins (left, right etc.) como te mencione antes, para incluir registros aun cuando no se encuentren en la otra tabla.

Supongo que te has confundido, los left y right son outer joins, que son los que no filtran el registro en caso de no haber match :)

roman 05-07-2004 18:49:10

Tienes toda la razón. Es que con esta gripa...


La franja horaria es GMT +2. Ahora son las 05:22:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi