Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Query SQL que añada valor si existe (https://www.clubdelphi.com/foros/showthread.php?t=74972)

NeWsP 21-07-2011 21:57:41

Query SQL que añada valor si existe
 
Buenas noches,

Perdón por el titulo pero es que no se bien bien como proponer mi problema, pero vamos a intentarlo:

Es para tablas DBF, y creo que en estos casos los SQL no tienen todas las funciones.

- Tengo 2 tablas, que haciendo:

Código SQL [-]
FormMain.Query1.SQL.Add('SELECT a.CESTADO,A.NNUMPRE,A.DFECPRE,B.CNOMCLI,A.NTOTBRUTO');
FormMain.Query1.SQL.Add('From PrecliT.dbf A, CLIENTES.DBF B');
FormMain.Query1.SQL.Add('WHERE A.CCODCLI=B.CCODCLI ORDER BY A.NNUMPRE');

va perfecto el query.

Ahora necesito añadir una tabla mas que tendrá la siguiente estructura:

COM (Character,1) <- tambien podria ser Bol
NNUMPED (Numeric,10)
COMENTARIO (Charecter,50);

El problema es que no se como ligar, para que en el query anterior (que hay muchos registros) Solo me añada una columna con el valor de COM en los resultados que estén dentro de esta tercera tabla.

He probado con:

Código SQL [-]
FormMain.Query1.SQL.Add('SELECT a.CESTADO,A.NNUMPRE,A.DFECPRE,B.CNOMCLI,A.NTOTBRUTO,C.COM');
FormMain.Query1.SQL.Add('From PrecliT.dbf A, CLIENTES.DBF B,Coment.DBF C');
FormMain.Query1.SQL.Add('WHERE A.CCODCLI=B.CCODCLI ORDER BY A.NNUMPRE');

Pero como es lógico por que no le estoy diciendo nada en el WHERE, me añade el valor de COM a todos los resultados.

Espero que mas o menos quede claro y el problema, y que alguien me pueda echar una manita.

Muchas gracias por leerlo.

oscarac 21-07-2011 22:24:28

pero...
com relacionas la Tabla COM con las otras 2?
debe existuir al menos un campo en comun para poder jalar los registros

NeWsP 21-07-2011 22:49:32

Hola Oscarac,

El campo en común es NNUMPRE que esta en la Tabla A y en la tabla C, el problema es que no están todos los valores en la tabla C, solo unos pocos, y si pongo el AND no me sirve porque solo me mostraría esos

oscarac 21-07-2011 23:20:33

a ver te pongo estos ejemplos
Cita:

Tabla A..........Tabla B...............Tabla C
A1....................A1....................A2
A2....................A2
A3....................A3
A4
que informacion quieres que te muestre ??? y como quieres que te la muestre

NeWsP 22-07-2011 05:22:27

Gracias por contestar Oscarac, te pongo los datos mas claros:

Cita:

Tabla A....................Tabla B...........Tabla C

NNUMPRE..................CODCLI............NNUMPRE
CODCLI....................NOMBRE............COM
FECHA............................................COMENTARIO
TOTAL
Esto rellena una grid que saldría

Código:

NNUMPRE FECHA NOMBRE TOTAL COM
El problema es que por ejemplo en la tabla C solo tengo un registro por ahora, que podrían ser 20 o 100 pero ahora mismo solo tengo uno, que es el del NNUMPRE=1, no se como hacer para que me salga el listado de todos los registros de la Tabla A, pero en el NNUMPRE=1 me salga el valor de COM y en el resto de registros que salga en blanco.

Espero haberme explicado algo mejor.

Muchisimas gracias.

oscarac 22-07-2011 05:43:31

y si lo haces asi

Código Delphi [-]
 
 
Select A.nnumpre, A.Fecha, A.Total, B.Nombre, C.Com
from TablaA A
Left Join TablaB B on A.CodCli = B.CodCli
Left Join TablaC C on A.nnumpre = C.nNumpre

NeWsP 22-07-2011 05:52:03

Uff mil gracias, funciona perfecto.

Luego mirare como funciona exactamente el LEFT JOIN que ahora me tengo que ir a trabajar...

Gracias otra vez.

oscarac 22-07-2011 06:21:54

yo ya me voy a dormir.... jejeje


La franja horaria es GMT +2. Ahora son las 18:56:05.

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