Bir Sql Sorgu Hatası

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Merhaba mürit ve müridelerim.

     

    Elimde şu şekilde bir şema yapısı var

    -- borrowed from https://stackoverflow.com/q/7745609/808921
    
    CREATE TABLE IF NOT EXISTS `wallets` (
      `wallet_id` int(6) unsigned NOT NULL,
      `wallet` int(3) unsigned NOT NULL,
      PRIMARY KEY (`wallet_id`)
    ) DEFAULT CHARSET=utf8;
    INSERT INTO `wallets` (`wallet_id`, `wallet`) VALUES
      ('1', '100'),
      ('2', '100');
      
      CREATE TABLE IF NOT EXISTS `totals` (
      `id` int(6) unsigned NOT NULL,
       `TotalID` int(6) unsigned NOT NULL,
      `wallet_id` int(6) unsigned NOT NULL,
      `total` int(3) unsigned NOT NULL,
      PRIMARY KEY (`id`)
    ) DEFAULT CHARSET=utf8;
    INSERT INTO `totals` (`id`, `TotalID`,`wallet_id`,`total`) VALUES
      ('1', '19','1', '250'),
     ('2', '19','1', '750');
     
     
     UPDATE wallets inner join totals on totals.wallet_id=wallets.wallet_id
    SET 
    wallets.wallet=wallets.wallet+totals.total
    Where totals.TotalID=19
    

     

     

    Bu durumda wallet_id 1 olan sütunun wallet değeri 1100 olması gerekirken 350 oluyor. Buradaki hata nedir ? Normalde 1100 olması gerekiyor.

     

    Select sorgusu şu şekilde çünkü 2 satır değer döndürüyor.

     

    SELECT * from wallets inner join totals on totals.wallet_id=wallets.wallet_id

    SQL FİDDLE : http://sqlfiddle.com/#!9/88436e/1/0


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    musdawdaf
    musdawdaf's avatar
    Kayıt Tarihi: 01/Ağustos/2006
    Erkek

    one-to-many oldugu icin onun ustunden join yapip bir sey eslestirmeye calisirsan mysql keyfine kalmis. direk boyle yazmak yerine iceriden sum alip onu unique row ile match et.

     

    update wallets 
    inner join
    ( select wallet_id, sum(total) total_sum
    from totals
    where totals.TotalID = 19
    group by wallet_id
    ) totals 
    on totals.wallet_id = wallets.wallet_id 
    set wallets.wallet = wallets.wallet + totals.total_sum;

     

Toplam Hit: 1497 Toplam Mesaj: 2
sql sorgu