PDA

Ver la Versión Completa : duda sql


vetustas
01-11-2003, 12:32:52
Hola!
Uso delphi 5 y Paradox. Tengo una tabla de empresas y otra de trabajos (ofertados por cada una de las empresas). Luego tengo un formulario donde el usuario rellena una serie de preferencias:lugar, tipo, sueldo... (aunque no es obligatorio rellenar todos las preferencias). Lo que quiero es una consulta en sql que me muestre los trabajos que cumplan las preferencias elegidas o que más se acerquen a ellas. Es posible eso?
Muchas gracias

marcoszorrilla
01-11-2003, 16:43:16
Si que es posible, pero no dices que campos tiene la tabla empresas, es decir como casa con trabajos ofertados.


Select e.Codigo, t.Codigo, t.Sueldo
From Empresas as e, Trabajos as t
Where e.Codigo = t.Codigo
And e.Sueldo >= QuotedStr(Edit1.text)


El SQL está en pseudocódigo, tienes que adaptarlo, pero más o menos ésta es la idea.

Un Saludo.

vetustas
03-11-2003, 19:55:33
En la consulta sql de antes, no me reconoce el campo text del combo con lo cual no me puede comparar con el de la tabla. El código que tengo es el siguiente:



modulo.qryPreferencias.Close;
modulo.qryPreferencias.sql.Text:= 'select e.cod_Empresa, t.cod_Empresa, t.Tipo_Practica
from empresa as e, practica as t
where e.cod_Empresa = t.cod_Empresa
and t.Tipo_Practica = (Form_Preferencias.ComboBox_Tipo).Text';
modulo.qryPreferencias.Open;



ah! y empresa y practica casa mediante el código. Muchas gracias

Viet
03-11-2003, 20:03:01
tendrias que sacar el valor del combo del armado de la Query
modulo.qryPreferencias.Close;
modulo.qryPreferencias.sql.Text:= 'select e.cod_Empresa, t.cod_Empresa, t.Tipo_Practica
from empresa as e, practica as t
where e.cod_Empresa = t.cod_Empresa
and t.Tipo_Practica = ' + Form_Preferencias.ComboBox_Tipo.Text;
modulo.qryPreferencias.Open;


Suerte ;)

vetustas
04-11-2003, 10:46:50
Ahora ya me reconoce lo del box, pero releyendo lo que me habia contestado Marcos en este hilo...no me he explicado bien. Lo que tengo es una lista de preferencias. Las preferencias son las siguientes: créditos, tipo, lugar, mes, duracion... La idea es encontrar aquella que mejor se adapte a esas preferencias. A ver si me explico: pongo un ejemplo
el usuario introduce
créditos: 12
tipo: gestion
lugar1: asturias
mes: enero
duracion (pongamos q lo deja en blanco)

Ahora supongamos q no existen trabajos q reunan las 4 condiciones (12, gestion, asturias, enero), la consulta deberia enseñarme aquellos q cumplan: 12, gestion, asturias y cualquier otro mes. Que no hay pues entonces los q cumlplan: 12, gestion y otro lugar.

Espero que me hayais entendido algo. :confused:

Muchisimas gracias

marcoszorrilla
04-11-2003, 15:35:39
Solamente voy a lanzar una idea, si te gusta la desarrollas y nos dices si funciona.

1.- Con una estructura de tipo Case.
evaluamos que condiciones contienen algo, por lo tanto ya sabremos cual no tenemos que añadir al SQL que pensamos armar.

2.- Hago tantos consultas como Condiciones puso el usuario, es decir si dejo en blanco una de cuatro, construyo 3 Consultas SQL.

Lanzo la primera sino devuelve nada, la marco como no válida puesto que no hay nada que responda a la preguntado

Con esto me quedo solamente con las que devuelven datos, supongamos que son tres.


luego quedaría combinarlas entre sí es decir

MiVariableTexto:=Sql1+Sql2

abro esta consulta, si devuelve algo, la combino con la 3, de esta manera, me aseguro que solamente trabajo con las preguntas que siempre devuelven registros, y en la segunda fase, las combino al máximo, es decir si las 3 combinadas devuelve algo, ya lo tengo, sino tendría que combinar 1 a 1 y quedarme o bien con la que más registros devuelva si las dos me dan resultados o con la que devuelva algo, si es que una sola combinación funciona.

Un Saludo.