1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

problema com querys

Discussão em 'Programação' iniciada por estrafalhote, 18 de Maio de 2007. (Respostas: 13; Visualizações: 971)

  1. estrafalhote

    estrafalhote Power Member

    eu constriu uma query para a minha datagrid através do query builder e a query até funciona quando eu a executo no query builder mas eu nao sei como utiliza la no programa

    a query é:

    Código:
    SELECT     produtos.idproduto, produtos.nome, produtos.quantidadestock, produtos.preco, produtos.caracteristicas, categorias.nome AS categoria, 
                          fornecedores.nome AS fornecedor
    FROM         produtos, categorias, fornecedores
    
    [​IMG]
     
  2. issues

    issues Power Member

    Em que programa queres usar a query?
     
  3. estrafalhote

    estrafalhote Power Member

    em que programa como?

    estou a usar o visual studio 2005
     
  4. Rui_Carlos

    Rui_Carlos 1st Folding then Sex

    acho que não era esta a tua questão, mas tens a certeza que essa query faz o que pretendes?

    é que isso vai-te fazer um produto externo, quando me parece que aquilo que queres é um Inner Join... acho que te falta aí a claúsula WHERE.
     
  5. estrafalhote

    estrafalhote Power Member

    pelo menos no query builder depois de criar a query eu faço executar e aparece tudo como eu desejo.
    agora quanto iner join e à clausula where gostaria que me explicasses melhor isso:
     
  6. wolftec

    wolftec Power Member

    Não percebi a tua pergunta, queres o q?

    Queres saber como fazer uma query ao SQL apartir da tua linguagem (seja ela qual for)?, ou queres saber como obter os resultados da query?
     
  7. estrafalhote

    estrafalhote Power Member

    eu queria construir uma query que me fizesse obter os resultados que eu tenho nas diferentes tabelas interligadas
     
  8. cabiros

    cabiros Power Member

    select produtos.* , categorias.*, fornecedores.* FROM produtos , categorias , fornecedores WHERE Produtos.idcategoria = categorias.idcategoria and produtos.idfornecedore = fornecedores.idfornecedor


    Ou entao com INNER JOIN



    select tab1.* , fornecedores.* from (select produtos.* , categorias.* FROM produtos INNER JOIN categorias ON produtos.idcategoria = categorias.idcategoria) as tab1 INNER JOIN Fornecedores ON tab1.idfornecedor = fornecedores.idfornecedor.

    Penso que os campos e tabelas estejam correctas. com esta query vais ter uns problemas por ter nomes de campos repetidos, mas resolves isso mudando-lhe os nomes como tens na tua query.

    Mas para que isto funcione tens de criar as relações na Base de Dados
     
    Última edição: 21 de Maio de 2007
  9. estrafalhote

    estrafalhote Power Member

    tenho só duas pequenas dúvidas.
    1ª o que ali em cima está com o nome de tab1.* corresponde a que?
    2ª o que diz fornecedores.*, produtos.* isto são os nomes das tabelas e os asteriscos são para substituir pelo nome do campo na base de dados, não são?
     
  10. cabiros

    cabiros Power Member

    1º o tab1 corresponde a 1 INNER JOIN entre 2 tabelas, ou seja, apos o INNER JOIN entre as tabelas Produtos e categorias dei-lhe o nome de tab1, podes dar o nome que quiseres.

    2º os *s e para seleccionar todos os campos da tabela.
     
    Última edição: 22 de Maio de 2007
  11. estrafalhote

    estrafalhote Power Member

    tenho mais umas duvidazitas

    1ª este código uso-o na parte de código do datagrid ou do form?
    2ª o tab1 é para ser declarado como variável? porque diz sempre que name tab1 is not declared
     
  12. cabiros

    cabiros Power Member

    Não é preciso declarar nada. Já experimentas-te a query no analyse da tua Base de Dados? Conforme eu pus ela não ia funcionar porque não se pode ter campos com o mesmo nome. mas resolves isso fazendo do genero, fornecedores.nome AS FornNome.

    Isso metes onde queres chamar essa query metes no SELECT da datasource. Penso que isso seja para definir as colunas da DataGrid.
     
  13. estrafalhote

    estrafalhote Power Member

    por aquilo que eu percebi tenho de fazer assim:

    Código:
    
     Dim strQuery As String = "iner JOIN produtos (nome, quantidadestock, preco, caracteristicas, idcategoria, idfornecedor) VALUES(@nome, @quantidadestock, @preco, @caracteristicas, @idcategoria, @idfornecedor)"
    
            Select Case "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bd pap.mdb;"
    
    
            tab1.datg , fornecedores.nomef from (select produtos.fornecedor , categorias.nomec FROM produtos INNER JOIN categorias ON produtos.idcategoria = categorias.nomec)as tab1 INNER JOIN Fornecedores ON tab1.idfornecedor = fornecedore.idfornecedor.
    
            End Select
    mas dá me erro em tab1.datg e categorias.nomec

    se me puderes explicar mais detalhadamente agradecia pois eu preciso mesmo disto
     
  14. cabiros

    cabiros Power Member

    o tab1.datg não existe por isso que te da erro.

    e depois estas a igualar 2 campos que nem sequer os chamas-te. faz o seguinte:

    SELECT tab.* , Fornecedores.nome as NomeFornecedor, fornecedores.idfornecedor as IdFornecedor FROM (SELECT Produtos.*, categorias.nome as NomeCategoria, categorias.idcategoria as IdCategoria FROM Produtos INNER JOIN categorias ON Produtos.idcategoria = categorias.idcategoria) as Tab INNER JOIN fornecedores ON tab.idfornecedor = fornecedores.idfornecedor
     

Partilhar esta Página