• 12-09-2009, 22:07:21
    #1
    Merhaba arkadaşlar,

    Aşağıdaki iki ayrı tablodan alınan verilerin matematiksel işlemini yapmam gerekiyor. Yapmam gereken şey şu:

    Silah loglarında üyeye ait her ayrı silahın silah listesinde bulunan atak puanına göre atak toplamını bulmam lazım.

    Mesela 11 nolu silahtan 5 adet var, 11 nolu silahın atak puanı 17,
    bu duruma göre,
    11 nolu silahın toplam atak puanı: 5*17=85
    25 nolu silahın toplam atak puanı: 10*22=220

    Ben bu işlemi tüm silah için tek seferde yapmak istiyorum.

    Yani echo $toplam; dediğimde 305 sayısını verebilecek birşey lazım.

    Arama yaptım ama malesef sonuç bulamadım. Aynı tablo olsa yapabiliyorum ama çapraz tablolarla ilgili başarı sağlayamadım.

    Yardımcı olabilecek arkadaşlara şimdiden çok teşekkür ederim.





    silah_liste
    +----------+-----------+
    |  silahid | silahatak |
    +----------+-----------+
    |    11    |    17     |
    |    25    |    22     |
    +----------+-----------+
    /////////////////////////////////////////////////////////////////////////
    silah_log
    +----------+----------------+-----------+----------+
    |    id    |	 uyeid      | silahid   |   adet   |
    +----------+----------------+-----------+----------+
    |     1    |     1161617    |	11      |    5     |
    |     2    |     1161617    |	25      |   10     |
    +----------+----------------+-----------+----------+
  • 12-09-2009, 23:37:23
    #2
    SELECT
    SUM(@Atak := silah_log.adet*silah_liste.silahatak) AS ToplamAtak
    FROM silah_log 
    LEFT JOIN silah_liste ON
    silah_liste.silahid = silah_log.silahid
  • 12-09-2009, 23:42:08
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım aşağıdaki sorgu ile hepsini tek seferde alabilirsin. Sonra sonucu istediğin gibi kullanırsın, tabii direk veritabanından toplatıp da alabilirsin, ama başka yerde de kullanabileceğinden böylesi daha iyi bence.
    <?php
     'select s.*, sl.silah_atak from silah_log s, silah_liste sl where s.silahid=sl.silah_id'
    ?>
  • 13-09-2009, 04:19:17
    #4
    Eğer uyeid lerin harbiden böleyse yani uyen çok fazla ise bu kodu iyi optimize etmek lazım. Şimdi iki arkadaş kod vermiş load seviyesi hangisi daha yuksekse onu kullanmak daha mantıklı bence. Bende bir soru sorum hangi kod daha hızlı çalışır.
  • 13-09-2009, 04:45:21
    #5
    metadige nin verdiği kodu kullandım ama metadigekodların üzerinde biraz oynama yaptı, 1-2 eksiği vardı. şu an sağlıklı bir şekilde çalışıyor. kendisine çok teşekkür ediyorum.

    kodların son hali aşağıda. benimle aynı duruma düşecek kişiler için hem öğretici olacktır hemde işlerini görecektir.


    <?php
    $sorgu = 'SELECT sum( t.topla ) AS toplam
    FROM (
    SELECT s. * , sl.silahatak, (
    s.adet * sl.silahatak
    ) AS topla
    FROM silah_log s, silah_liste sl
    WHERE s.silahid = sl.silahid
    AND s.uyeid =1161617
    ) t ';
    ?>

    mustafa90 ın verdiği kodda çalışıyor fakat onda toplama işlemini tüm silahlara yapıyor. üye ayrımı yapmıyordu. Kendisine teşekkür ediyorum
  • 14-09-2009, 14:59:50
    #6
    Benim kodlarımda çalışıyordu
    Koşul belirttiniz mi ? Koşul belirtmezseniz bütün silahları toplar.
    Örnek:
    SELECT
    SUM(@Atak := silah_log.adet*silah_liste.silahatak) AS ToplamAtak
    FROM silah_log 
    LEFT JOIN silah_liste ON
    silah_liste.silahid = silah_log.silahid
    WHERE
     silah_log.uyeid = UYE_ID AND
     silah_liste.silahid = SİLAH_ID