Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2011
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
pero...
com relacionas la Tabla COM con las otras 2?
debe existuir al menos un campo en comun para poder jalar los registros
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 21-07-2011
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
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
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 22-07-2011
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 22-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
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
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 22-07-2011
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
Uff mil gracias, funciona perfecto.

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

Gracias otra vez.
Responder Con Cita
  #8  
Antiguo 22-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
yo ya me voy a dormir.... jejeje
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
existe la forma de "comparar" el valor de un campo con una cadena? oscarac SQL 2 03-04-2011 10:23:38
Comprobar en evento OnExit si valor de campo ya existe JMGR Conexión con bases de datos 9 18-05-2008 03:42:31
Valor Null tanto en tablas como en query Aprendiendo SQL 3 16-10-2006 11:49:14
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
Saber si un dato existe en una query ilichhernandez Conexión con bases de datos 9 03-11-2005 06:10:31


La franja horaria es GMT +2. Ahora son las 23:16:38.


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
Copyright 1996-2007 Club Delphi