DUVIDA SOBRE SELECT

MEGAMELO2 22/08/2013 22:04:12
#427976
SELECT clientes.[Nome cliente], funcionario.nomefunc, servicos.nservico
FROM clientes INNER JOIN
funcionario ON clientes.idcli = funcionario.idcli INNER JOIN
servicos ON funcionario.idfunc = servicos.idfunc
WHERE (select clientes.idcli from clientes where nome = [Ô]andre[Ô])

Porque não funciona deste jeito??

tenho um text box aonde quero inserir o nome do cliente e quando eu aperto o botão quero que ele me retorne
o resultado deste select, estou fazendo o mesmo em uma query de sql o problema e que o índice da tabela clientes esta em int
KERPLUNK 23/08/2013 09:00:22
#427989
Uma coisa muito importante que programadores, principalmente vindos do VB6, devem entender é que erros, não são booleanos. Eles tem identificação, descrição e causa. [Ô]Não está funcionando[Ô], não nos diz muito. Sintaticamente, não vejo erro nenhum na sua query. Tem alguma mensagem de erro? O que acontece?
FELLIPEASSIS 23/08/2013 11:00:17
#427999
vc testou sua query no gerenciador do banco de dados ou na aplicação?
teste primeiro no gerenciador,lá ele reporta o erro!
MEGAMELO2 23/08/2013 13:18:17
#428007
ele informa:
error in where clausule near [ô](.[ô]
unable to parse query text
e no lugar do andre eu gostaria de passar o valor de um campo text e possível?
detalhe como e um banco de dados local estou usando sql server compact padrão do vb 2010

SELECT clientes.[Nome cliente], funcionario.nomefunc, servicos.nservico
FROM clientes INNER JOIN
funcionario ON clientes.idcli = funcionario.idcli INNER JOIN
servicos ON funcionario.idfunc = servicos.idfunc
WHERE (select clientes.idcli from clientes where nome = [Ô]andre[Ô])

obrigado
FELLIPEASSIS 23/08/2013 13:39:56
#428011
sobre inner join
youtube
KERPLUNK 23/08/2013 14:00:42
#428013
Tente assim:

SELECT clientes.[Nome cliente], funcionario.nomefunc, servicos.nservico
FROM clientes INNER JOIN
funcionario ON clientes.idcli = funcionario.idcli INNER JOIN
servicos ON funcionario.idfunc = servicos.idfunc
WHERE Cliente.nome = [Ô]andre[Ô]
FILMAN 23/08/2013 14:12:17
#428015
Você pode tentar assim

Access
Dim sSQL As String

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT clientes.[Nome cliente], funcionario.nomefunc, servicos.nservico[Ô]
sSQL = sSQL & [Ô] FROM (clientes[Ô]
sSQL = sSQL & [Ô] INNER JOIN funcionario ON (clientes.idcli = funcionario.idcli))[Ô]
sSQL = sSQL & [Ô] INNER JOIN servicos ON (funcionario.idfunc = servicos.idfunc)[Ô]
sSQL = sSQL & [Ô] WHERE clientes.nome = [ô]andre[ô][Ô]




SQL Server
Dim sSQL As String

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT clientes.[Nome cliente], funcionario.nomefunc, servicos.nservico[Ô]
sSQL = sSQL & [Ô] FROM clientes[Ô]
sSQL = sSQL & [Ô] INNER JOIN funcionario ON (clientes.idcli = funcionario.idcli)[Ô]
sSQL = sSQL & [Ô] INNER JOIN servicos ON (funcionario.idfunc = servicos.idfunc)[Ô]
sSQL = sSQL & [Ô] WHERE clientes.nome = [ô]andre[ô][Ô]



Espero ter ajudado
TIMCOSEG 23/08/2013 14:23:50
#428016
Resposta escolhida
Se você quer listar todos os clientes cujo nome inicia por Andre, então utilize o like no script e concatene ao texto que for para pesquisar o % (caracter curinga) ao passar o texto para consulta inclua no fim dele o percent(%).
No compact edition temos algumas limitações no que tange a funções ou querys mais elaboradas, mas para esta query faça como esta embaixo.


SELECT clientes.[Nome cliente], funcionario.nomefunc, servicos.nservico
FROM clientes
INNER JOIN funcionario
ON clientes.idcli = funcionario.idcli
INNER JOIN servicos ON funcionario.idfunc = servicos.idfunc
WHERE funcionario.nome LIKE [ô]ANDRE%[ô]

ORDER BY NOME (isto é opcional)
MEGAMELO2 23/08/2013 14:45:30
#428020
desse jeito sei que funciona soque o problema e que eu dou o 2 select para descobrir o id desse cliente, que no caso e o índice da tabela clientes, porque eu preciso passar o índice para a query e não o nome pois na hora que o cliente digitar na text box de pesquisa sera o nome do cliente e não o id do mesmo...

por isso a necessidade do 2 select
captaram???
como eu poderia fazer esta pesquisa?
preciso pegar o nome do cliente na textbox.text para descobrir o índice dele ai sim fazer a pesquisa pela id dele,
minhas tabelas são indexadas por int

obrigado
FILMAN 23/08/2013 15:00:01
#428023
Faça um FORM de pesquisa com um ListBox ou Grid(sugiro o Grid)

No Change do TextBox o você faz assim

sSQL = [Ô]SELECT IDCLI, NOME_CLIENTE FROM CLIENTES WHERE NOME_CLIENTE LIKE [ô]%[Ô] & txtNome.Text & [Ô]%[ô][Ô]
....
....
Faça o resto do processo, ai o resultado da Query você vai preenchendo o grid!

Ai ao clicar no cliente no grid você pega o IDCLI que esta no grid também e faça a consulta de acordo com o que precisar!


Deu uma clariada nas ideias?
TIMCOSEG 23/08/2013 15:29:32
#428027
O ID do cliente pode ser retornado na mesma consulta é só incluir o campo, não precisa de uma subquery para isto, os dados retornados já estarão com a informação e assim você poderá utilizá-la, afinal o indice tá na mesma tabela e a query pode ser alterada para retornar os dados que você quer.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas