Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2011
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Poder: 13
Salnhack Va por buen camino
Question Problema con SELECT

Hola espero que me puedan ayudar

tengo 3 tablas, Mes(id_mes,descmes), Servicios(id_servicios, descservicios), Venta(id_venta,importev,id_servicios,id_mes).

necesito mostrar la descripcion de los servicio (descservicio) incluidos en la tabla venta de un mes en especifico

estoy haciendo esto
Código Delphi [-]
// Seleciono el id del mes selecionado en un comoboBox
     with DataModule4.Query1 do
      begin
       close;
       SQL.Clear;
       SQL.Add('Select (id_mes) from mes where descmes='+ QuotedStr(suiDBLookupComboBox2.Text));
       Open;
       mes:=FieldByName('id_mes').AsInteger;
      end;

//luego realizo al siguiente consulta que me selecciona la descripcion de los servicios 

 with DataModule4.Query3 do
      begin
       Close;
       SQL.Clear;
       SQL.Add('select (descservicios) from servicios where id_servicios=venta.id_servicios and venta.id_mes=:mes');
       ParamByName('mes').AsInteger:=mes;
       Open;
     end;

cuando la ejecuto me dice que faltan parametros

por favor si alguien me pudiera decir que estoy haciendo mal se lo agradeceria
tengo el query3 conectado a otro comboBox para que me liste los servicios
Responder Con Cita
  #2  
Antiguo 10-11-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
me parece que deberias usar joins.....


te doy un ejemplo

Código SQL [-]
 
Select T1.Campos... T2.campos...T3...campos 
from T1
Left Join T2 on T1.CampoenComunconT2 = T2.CampoenComunconT1
Left Join T3 on T2.CampoenComunconT3 = T3.CampoenComunconT2
Where T2.Campo = Condicion and T1.campo = Condicion
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 10-11-2011
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Poder: 13
Salnhack Va por buen camino
hola oscarac

he probado tu sugerencia y no me funciona
Responder Con Cita
  #4  
Antiguo 10-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Salnhack Ver Mensaje
hola oscarac
he probado tu sugerencia y no me funciona
¿Y qué has probado?, ¿qué has puesto exactamente?, ¿qué resultado has obtenido?, ¿algún mensaje de error?, ¿cual?...
Ten en cuenta que oscarac te ha puesto un ejemplo.
Deberías dar más explicaciones si quieres que se te ayude, ya sabes: mejores preguntas = mejores respuestas
Responder Con Cita
  #5  
Antiguo 10-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Proba de esta forma:
Código Delphi [-]
  with Query do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT SERVICIOS.DESCSERVICIOS ');
    SQL.Add('FROM SERVICIOS, VENTA ');
    SQL.Add('WHERE VENTA.ID_SERVICIOS = SERVICIOS.ID_SERVICIOS ');
    SQL.Add('AND VENTA.ID_MES = :MES');
    ParamByName('MES').AsString:=  suiDBLookupComboBox2.Text;
    Open;
  end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 10-11-2011 a las 20:17:22. Razón: corregir 'DESCSEVICIOS' por 'DESCSERVICIOS'
Responder Con Cita
  #6  
Antiguo 12-11-2011
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Una sugerencia, cuando tratamos con bases de datos tipo sql, lo mejor es probar las sentencias antes en algún administrador que nos permita editarlas y ejecutarlas para ir detectando errores, una vez que demos con el resultado que queremos entonce si lo pasamos a nuestro código. Además muchos de estos administradores traen forma de guardar los queries por lo que los puedes utilizar para otros proyectos sin tener que volver a abrir todo tu proyecto en Delphi.

En este caso considero estas atacando mal el problema desde el inicio, primero nos concentramos únicamente en SQL.

Código SQL [-]
 select  mes.descmes, venta.id_venta, servicios.descservicios, venta.importev
 from 
venta
join mes on (mes.id_mes=venta.id_mes)
join servicios on (servicios.id_servicios=venta.id_servicios)
where mes.id_mes=1

En ese ejemplo veremos los datos vendidos en el mes de enero (no necesitas las descripciones, es más sencillo con números.

Pruebala con el administrador de tu BD y ve el resultado ya cuando estes seguro, lo pasas a Delphi y lo parametrizas y acomodas.

Esta es la forma más sencilla de no tener dolor de cabeza
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 09-12-2011
adan12 adan12 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 17
Poder: 0
adan12 Va por buen camino
q tal señores yo tengo un problema con este select

AQTemp.SQL.Text := 'Select Descripcion From Estaciones Where Graficar = true ';
Responder Con Cita
  #8  
Antiguo 09-12-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por Salnhack Ver Mensaje
Hola espero que me puedan ayudar

tengo 3 tablas, Mes(id_mes,descmes), Servicios(id_servicios, descservicios), Venta(id_venta,importev,id_servicios,id_mes).

necesito mostrar la descripcion de los servicio (descservicio) incluidos en la tabla venta de un mes en especifico

estoy haciendo esto
Código Delphi [-]
// Seleciono el id del mes selecionado en un comoboBox
     with DataModule4.Query1 do
      begin
       close;
       SQL.Clear;
       SQL.Add('Select (id_mes) from mes where descmes='+ QuotedStr(suiDBLookupComboBox2.Text));
       Open;
       mes:=FieldByName('id_mes').AsInteger;
      end;

//luego realizo al siguiente consulta que me selecciona la descripcion de los servicios 

 with DataModule4.Query3 do
      begin
       Close;
       SQL.Clear;
       SQL.Add('select (descservicios) from servicios where id_servicios=venta.id_servicios and venta.id_mes=:mes');
       ParamByName('mes').AsInteger:=mes;
       Open;
     end;

cuando la ejecuto me dice que faltan parametros

por favor si alguien me pudiera decir que estoy haciendo mal se lo agradeceria
tengo el query3 conectado a otro comboBox para que me liste los servicios
A parte de todas las respuestas de los compañeros, añado mi grano de arena.
Código Delphi [-]
with DataModule4.Query1 do
begin
  Close;
  SQL.Clear;
    SQL.Add('SELECT');
    SQL.Add('    S.DESCSERVICIOS');
    SQL.Add('  FROM Venta AS V');
    SQL.Add('    INNER JOIN Servicios AS S');
    SQL.Add('      ON S.ID_SERVICIOS = V.ID_SERVICIOS');
    SQL.Add('    INNER JOIN Mes AS M');
    SQL.Add('      ON M.ID_MES = V.ID_MES');
    SQL.Add('  WHERE M.DESCMES = ' + QuotedStr(suiDBLookupComboBox2.Text));
  Open;
end;
Cómo dice AziRain, es más rápido la ejecución de una consulta SQL utilizando números, aunque la consulta que te pongo es la misma que tienes al principio pero sólo en una consulta, aunque son más líneas también es más claro.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #9  
Antiguo 09-12-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por adan12 Ver Mensaje
q tal señores yo tengo un problema con este select

AQTemp.SQL.Text := 'Select Descripcion From Estaciones Where Graficar = true ';
Aunque esto debería de ir en otro hilo, Graficar = true en SQL no existe true cómo dato, ahora el resultado True puede tener 2 valores según base de datos que son -1 ó 1 y false es 0, el resultado True o False, se obtiene de una comparación o resultado pero no cómo valor, porque true no existe en SQL, al menos en SQL SERVER, puede haber en otros motores el dato TRUE o FALSE ya definidos cómo parte del motor.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 09-12-2011 a las 09:08:45.
Responder Con Cita
  #10  
Antiguo 09-12-2011
adan12 adan12 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 17
Poder: 0
adan12 Va por buen camino
Cita:
Empezado por olbeup Ver Mensaje
Aunque esto debería de ir en otro hilo, Graficar = true en SQL no existe true cómo dato, ahora el resultado True puede tener 2 valores según base de datos que son -1 ó 1 y false es 0, el resultado True o False, se obtiene de una comparación o resultado pero no cómo valor, porque true no existe en SQL, al menos en SQL SERVER

Un saludo.
es que estoy pasando todo de acces a sql server 2008 entonces enves de true que iria en la base de datos el formato de graficar es bit osea 0 o 1 que seria en acces si/no haber si me ayudas por fa
Responder Con Cita
  #11  
Antiguo 09-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, no mezclar cosas, preguntas distintas en hilos distintos.
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.
Responder Con Cita
  #12  
Antiguo 09-12-2011
adan12 adan12 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 17
Poder: 0
adan12 Va por buen camino
a donde puedo esponer mi caso porq en realiad no se donde decime voz entonces ,,,,
Responder Con Cita
  #13  
Antiguo 09-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues crea un hilo nuevo, eliges el foro más adecuado a tu consulta, le das al botón "Nuevo hilo", escribes un título descriptivo a tu pregunta, y expones el caso lo más amplia y claramente posible.
Tal y como explica nuestra guía de estilo.
Responder Con Cita
Respuesta



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
Problema con select first en Firebird egostar Firebird e Interbase 20 17-07-2007 21:55:11
Problema con Select e inner join en interbase trashky SQL 8 22-05-2007 00:12:42
problema con la consulta select count() enecumene PHP 5 01-02-2007 23:33:24
Problema con consulta not in (select ....) VRO Firebird e Interbase 12 03-10-2005 18:54:05
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35


La franja horaria es GMT +2. Ahora son las 17:57:08.


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