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

sql

Discussão em 'Programação' iniciada por miss.Danyzinha, 21 de Junho de 2008. (Respostas: 7; Visualizações: 720)

  1. boas

    estou a implementar uma base de dados em sql. preciso de actualizar os dados de uma tabela recorrendo para isso a uma multiplicação entre um dado dessa mesma tabela e outro dado de outra, mas não estou a conseguir.
    [FONT=&quot]
    [/FONT]
    [FONT=&quot][/FONT]update abastecimentos
    set valor_total= litros_abast* (select valor_unit from tiposcombustivel where tiposcombustivel.id_combustivel=Bombascombustivel.nr_combustivel




    estão aí supostamente cruzadas 3 tabelas, mas dá erro, como sou nova nisto não sei o que estou a fazer mal.
     
  2. samahong

    samahong Power Member

    Olá,

    Provavelmente está a dar erro porque estás a referir uma tabela que não estás a incluir na query (Bombascombustivel). Tu estás a referir 3 tabelas (Abastecimentos, TipoisCombustivel e BombasCombustivel), mas só estás a aceder a duas (Abastecimentos, TipoCombustivel).
     
  3. obrigada. tens razão não estava a aceder á 3ª tabela, no entanto tentei aceder mas continuou a dar erro no nr_combustivel, acho que estou a fazer qualquer coisa mal mas não sei o que..

    update abastecimentos
    set valor_total= litros_abast* (select valor_unit from tiposcombustivel where tiposcombustivel.id_combustivel=Bombascombustivel. nr_combustivel)
    nr_combustivel from bombascombustivel
     
  4. samahong

    samahong Power Member

    Esse update não faz muito sentido, nomeadamente a última linha O que queres exactamente fazer? Podes mostrar as tabelas que estás a consultar?
     
  5. eu quero calcular o valor total na tabela abastecimentos, com base no valor unitário da tabela tipos de combustivel.aqui estão as tabelas em baixo :D [​IMG]
     
    Última edição: 21 de Junho de 2008
  6. samahong

    samahong Power Member


    Então deves querer isto:

    Código:
    UPDATE
    	Abastecimentos
    SET
    	valor_total = litros_abast * 
    		(SELECT 
    			TiposCombustivel.valor_unit 
    		 FROM 
    			BombasCombustivel, TiposCombustivel 					
    		 WHERE 
    			Abastecimentos.nr_bombascomb = BombasCombustivel.id_bombacomb AND 	
    			BombasCombustivel.nrCombustivel = TiposCombustivel.id_combustivel)
    
    É de salientar que assim vais actualizar toda a tabela de Abastecimentos. Se quiseres actualizar só uma das linhas tens que acrescentar uma cláusula where no updade.

    Espero ter ajudado.
     
  7. ajudas-te e muito.. obrigada :D
     

Partilhar esta Página