Fórum Consultar sobre consulta #196212
20/11/2003
0
Blz.
è o seguinte tenho um sistema de locadora ,preciso qua na hora da locação o sistema me informe se o filme de n° tal ja foi locado pelo cliente de n° tal.
Na verdade tenho que aplicar um select e trazer os dados das locações anteriores deste cliente e em cima desses dados( 1° select que apliquei) aplicar outro select, verificando se o filme de n° tal que esta sendo locado já foi locado pelo cliente de n° tal.
Se alguem puder me ajudar ou dar uma diga de como criar esta consulta ficarei muito grato.
Obrigado a todos do forum que me ajudaram muito .
Alexrol
Curtir tópico
+ 0Posts
20/11/2003
Denis
Não sei se entendi direito o que quer. Mas acho que o que vc. quer é um select dentro do outro.
Passe as tabelas para a gente ter uma idéia melhor.
Gostei + 0
20/11/2003
Alexrol
Muito bem Quando inico uma nova locação ja informo os dados do cliente /hora / numero da locação/ etc.
na hora que vou adicionar os itens_pedido(filmes), preciso Localizar os pedidos anteriores deste cliente (tabela Pedidos) trazendo-me os filmes (tabela Itens_Pedido) que ja foram locados por ele anteriormente e em cima disso consultar se o filme que ele estal ocando já foi locado por ele anteriormente.Caso o filme ja foi locado ele me retorna uma menssagem para que eu possa advertir o cliente ,que ele ja locou aquele filme.
minha tabelas são :
Clientes
Dados Basicos
Filmes
Dados Basicos
Pedido
Num_Loc
Cod_Cli
Total_Loc
Data_Hora_Loc
N_Itens
etc...
Itens_Pedido
Cod_Loc
Num_Item_Loc
Cod_Filme
Sub_Total
Total
etc...
Então eu preciso pesquisar o cliente trazendo todos os dados do mesmo e em cima disso pesquisar o filme que esta sendo locado.
ou seja ´preciso aplicar um select em cima de outro select
detalhe au uso o interbase com DbExpress
Gostei + 0
20/11/2003
Denis
Vc. pode fazer uma select que elimina os filmes que já alugou da pesquisa. Mas isto seria um problema. Pois o cliente pode alugar o mesmo filme várias vezes ( eu mesmo sou dono de alugar filmes e esquecer de assistir e depois tenho que alugar de novo, rs,rs,rs). Então esta maneira não seria viável.
O que vc. pode fazer são duas selects separadas mesmo.
Uma select teria todos os filmes. ( select * from filmes )
Quando desse um clique para alugar um filme, então o programa faria uma outra select apenas para consultar se o filme foi alugado por ele ou não.
( select * from itens_pedidos where cod_filme = :cod_filme and cod_cli = :Cliente ) mais ou menos assim.
Então, se esse segunda select retornasse algum dado então o filme já teria sido alugado e vc. poderia dar um aviso para o operador do sistema. Mas sem bloqueios.
Claro, depois melhorar um pouco, trazendo apenas os campos necessários e assim por diante.
Agora para fazer uma select dentro de outra select seria assim :
Select * from filmes where cod_Filme not in (select cod_filme from pedidos where cliente=:cliente)
Mais ou menos assim para as suas tabelas, pois não passou os campos que relacionam as tabelas. Mas já dá para ter uma idéia de como funciona. Só que desta forma eliminaria da consulta todos os filmes que o cliente já alugou.
Espero ter ajudado alguma coisa.
Gostei + 0
20/11/2003
Denis
Gostei + 0
20/11/2003
Davidbezerra
por exemplo:
apos o select dos filmes que o cliente ja locou, vc aplica um locate do filme que ele esta locando, e caso o filme esteja no resultado do select dos filmes ja locados pelo cliente ele returna verdadeiro, e sendo o resultado verdadeiro o filme ja foi locado pelo cliente.
ate mas.
Gostei + 0
21/11/2003
Rafael_gamba
a primeira query seria do tipo :
select * from itens pedidos where cliente = :cli
apartir desta query vc faria o locate desta forma:
If Query1.Locate(´Cod_Filme´,TabelaFilmeCodFilme.value,[LocaseInsensitive]) then
ShowMessage(´Filme já locado´);
A idéia do Dennis também é boa. O problema é que vc não tem as 2 informações na mesma tabela. Vc teria que pegar o numero da locação para depois ver o número do filme.
Gostei + 0
21/11/2003
Denis
Gostei + 0
21/11/2003
Alexrol
Valeu pela força , vcs me ajudaram muito.
agradeço a todos vcs
valeu mesmo :D - (b)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)