Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Ayuda con Query (https://www.clubdelphi.com/foros/showthread.php?t=49827)

marcial 31-10-2007 11:05:26

Ayuda con Query
 
Hola a todos:
Por favor, necesito ayuda para algo simple:
Trabajo don D5 y Paradox
Tengo dos tablas, una FACTURAS y otra ENTREGA
en Facturas dos campos : CLIENTE y TOTALFACTURA
en Entregas dos campos : CLIENTE y TOTALENTREGA
y en cada tabla un registro
en Facturas: Cliente 00052 TotalFactura: 100
en Entregas: Cliente 00052 TotalEntraga: 100

pues bien, lo que yo quiero es un query que me mezcle las dos y obtenga lo siguiente:

Cliente TotalEntrega TotalFactura
00052 100 0
00052 0 100

esto es muy simple, y llevo tiempo con el Join, Inner, Left, Right y lo que obtengo es lo siguiente:

Cliente TotalEntrega TotalFactura
00052 100 100
00052 100 100

Como puedo hacerlo??

Muchas gracias por anticipado

Marcial

Ivanzinho 31-10-2007 11:36:08

Puedes hacerlo así :
Código SQL [-]
Select cliente, TotalFactura, 0 TotalEntrega
from Facturas
UNION
Select cliente, 0 TotalFactura, TotalEntrega
from Entregas
order by 1

Un saúdo

marcial 31-10-2007 14:26:08

Seguramente tendras razon, pero me da "Type Mitmatch en la expresion". No se que significa "0 TotalFactura".
Por otra parte, en el fichero Facturas no tengo el campo "TotalEntrega" ni en el fichero entregas tengo el campo "TotalFactura"

De todas formas gracias.

Lonidas 31-10-2007 14:33:04

Asi seria la consulta
Código SQL [-]
Select cliente, TotalFactura, 0 
from Factura
UNION
Select cliente, 0 , TotalEntrega
from Entrega

lo que te quiso poner [Ivanzinho] es que donde dice "0 totalfactura" es para que aparesca la columna con el nombre TotalFactura pero le falto el comando "As" osea te quedaria asi
Código SQL [-]
Select cliente, TotalFactura, (0) As TotalEntrega
from Factura
UNION
Select cliente, (0) As TotalFactura , TotalEntrega
from Entrega
:)

Lepe 31-10-2007 14:46:23

(edito: ya está solucionado)

¿ahora no se pueden borrar los mensajes?? bueno, pos vale :p

Saludos

marcial 31-10-2007 18:12:55

Perdonad todos pero creo que por simplificar os he confundido un poco. Vamos a ver:
Lo que me habeis contestado funciona bien con respecto a mi pregunta inicial pero lo que no os he dicho es que los ficheros Cabeceras y Entregas contienen más campos no comunes por ejemplo en Entregas hay "Concepto" y en Cabeceras hay "TipoDocumento", "BaseImponible", "Descuento" etc.

Entonces cuando pongo en los select de cada fichero sus campos me aparece lo de "tipo mitmatch en la expresion" porque todos no son campos comunes a los dos ficheros.

Espero haberme explicado y os doy las gracias a todos nuevamente.

Ivanzinho 31-10-2007 18:18:36

No entiendo bien qué es lo que quieres, ¿puedes poner un ejemplo de las dos tablas y lo que quieres conseguir?

Recuerda que para hacer la union las dos consulta tienen que devolver los mismos campos, si una tabla tiene unos campos que la otra no tiene lo que debes hacer es agregarlos como te indique anteriormente con los campos TotalFactura y TotalEntrega

Un saúdo.

marcial 31-10-2007 18:43:36

Tienes razon, es mejor un ejemplo:
en la tabla Entregas a cuenta tengo los siguientes campos:
Codigo (es el codigo del cliente), HoraApunte, Nombre, ImporteEntrega, FechaEntrega, Concepto, Documento

En Cabeceras tengo:
Documento, TipoDocumento,Fecha,NroFactura,CodCliente,NombreCliente,BImponible,Descuento,Recargo,TotalFinal,Fact urado,Pagado,oficial

y lo que quiero es que me salga un query con
Documento,Fecha,CodCliente,Nombre,ImporteEntrega,ImporteFactura,Concepto,TotalFactura
WHERE TipoDocumento <> "P" and TipoDocumento <> "B" ORDER ByFECHA

para que me salgan tantos registros como entregas a cuenta mas aquellas cabeceras que no sean P ni B

Gracias otra vez

Ivanzinho 31-10-2007 18:50:02

No sé, igual es culpa mia, pero sigo si entender muy bien lo que quieres.

Creo que deberías dar más información acerca de las tablas : Claves primarias, Claves foraneas, .... y poner un ejemplo con datos. Es que no veo muy bien la relación entre las tablas.

Un saúdo.

Lonidas 31-10-2007 19:09:49

Si yo también sigo sin entender lo que pretendes hacer, estamos hablando de dos tablas:
Entregas y Facturas
O de tres tablas
Entregas, Facturas y cabeceras
Quieres hacer un unión u otro tipo de consulta yo ya me perdí :p

Y que relaciona a entregas y cabeceras acaso es el Documento?

marcial 31-10-2007 19:29:18

Veamos
Tabla Entragas a Cuenta

Codigo FechaEntrega ImporteEntrega Concepto
00052 14/10/2007 100,00 Entrega a cuenta factura 28
00016 16/10/2007 50,00 Entrega a cuenta factura 14
00052 20/10/2007 40,00 Entrega a cuenta facturas


Tabla Cabeceras

CodCliente Fecha Documento TipoDocmto Pagado TOTAL Nombre
00010 05/10/2007 26 A N 500.00 Pepe
00052 07/10/2007 28 F N 100.00 Juan
00052 10/10/2007 30 F S 60.00 Juan

Yo quiero que cuando pida un extracto del cliente 00052 me salga:

Codigo Nombre Fecha Documento TipoDocmto Imp.Entrega Imp.Fra Concepto
00052 Juan 14/10/2007 100,00 Entrega...
00052 Juan 20/10/2007 40,00 Entrega.....
00052 Juan 07/10/2007 28 F 100,00
00052 Juan 10/10/2007 30 F 60,00

Ivanzinho 31-10-2007 20:12:12

A ver si de esta te entendí
Código SQL [-]
Select CodigoCliente Codigo, Nombre, Fecha, Documento, TipoDocumento, 0 ImpEntrega, 
       ImpFra, '' Conceptofrom Cabeceras
where TipoDocumento <> 'P' and TipoDocumento <> 'B'
UNION
Select Codigo, Nombre, FechaEntrega Fecha, 0 Documento, '' TipoDocumento, ImpEntrega, 
      0 ImpFra, Concepto
from Entregas
order by 3

Igual se me coló algo, pero ese es el concepto.

Un saúdo.


La franja horaria es GMT +2. Ahora son las 06:57:16.

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