• 01-02-2009, 04:13:42
    #1
    Merhaba arkadaşlar,

    Birtürlü yapamadım ve en sonunda burada sormak istedim. Şimdi elimde 3 tablo var, bunlardan birincisi CATEGORY, ikincisi PRODUCTS, üçüncüsü ise CURRENT

    CATEGORYtablosu
    PK
    NAMEIS

    PRODUCTS tablosu
    PK
    NAMEIS
    CATEGORYPK

    CURRENTtablosu
    PK
    PRODUCTSPK
    AMOUNT
    PRICEDOLLAR
    MOTION

    şimdi benim yapmam gereken ise kategorilerde kaç adet ürün olduğunu COUNT(PRODUCTS.PK), bu kategorideki ürünlerden toplam kaç adet alındığı ve satıldığı MOTION ile bu değer tutuluyor. MOTION 1 ise alındığını, 0 ise satıldığını gösteriyor. Buna göre ortalama ne kadar maliyeti olduğunu ve toplam kazandığını bulacak bir view yazmaya çalışıyorum ama bir türlü olmadı. Akla hayale sığmayan değerler verip duruyor.

    yani kısaca bana viewde;
    Toplam çıkış miktarı, toplam giriş miktarı, ortalama ve toplam giriş çıkış miktarları ve bu kategoride bulunan ürün sayısı lazım.
  • 01-02-2009, 11:39:07
    #2
    Üyeliği durduruldu
    pk primary keyiniz mi
    alanlari açık bir şekilde yazsaniz olmaz mı?
  • 01-02-2009, 17:54:55
    #3
    evet PK primary key

    CATEGORYtablosu
    PK_______NAMEIS
    1________Yazılım
    2________Mouse
    3________Ekran Kartı

    PRODUCTS tablosu
    PK________NAMEIS________________CATEGORYPK
    1_________Norton Antivirüs___________1
    2_________Adobe Reader Pro________1
    3_________Usb Mini Mouse___________2
    4_________Radion Ekran Kartı_________3

    CURRENTtablosu
    PK________PRODUCTSPK_________AMOUNT_________PRICED OLLAR____MOTION
    1_________4__________________20__________________1 50 _________1
    2_________3__________________50__________________7 ____________1
    3_________2__________________5___________________2 50__________1
    4_________1__________________5___________________6 0___________1
    5_________1__________________2___________________7 0___________0
    6_________1__________________3___________________8 0___________0
    7_________4__________________10__________________1 60__________0

    tablo ve içindeki veriler bu şekilde.
    Current tablosuna bakıldığında PRODUCTSPK 1 olan yani Norton Antivirüs şuan stokta bulunmamakta. MOTION 1 ile Norton Antivirüs 5 adet alınmış ve MOTION 0 ile 2+3 adet satılmış. benim istediğim ise mesela Yazılım alanında toplam kaç ürün alınmış (10), Toplam maliyeti (5*250+5*60 = 1550), Satılan ürün sayısı (2+3 = 5), Satılan üründen gelen para (2*70+3*80).

    Şimdiden teşekkürler.
  • 01-02-2009, 20:00:43
    #4
    Üyeliği durduruldu
    electronicboy adlı üyeden alıntı: mesajı görüntüle
    evet PK primary key
    CATEGORYtablosu
    PK_______NAMEIS
    1________Yazılım
    2________Mouse
    3________Ekran Kartı
    PRODUCTS tablosu
    PK________NAMEIS________________CATEGORYPK
    1_________Norton Antivirüs___________1
    2_________Adobe Reader Pro________1
    3_________Usb Mini Mouse___________2
    4_________Radion Ekran Kartı_________3
    CURRENTtablosu
    PK________PRODUCTSPK_________AMOUNT_________PRICED OLLAR____MOTION
    1_________4__________________20__________________1 50 _________1
    2_________3__________________50__________________7 ____________1
    3_________2__________________5___________________2 50__________1
    4_________1__________________5___________________6 0___________1
    5_________1__________________2___________________7 0___________0
    6_________1__________________3___________________8 0___________0
    7_________4__________________10__________________1 60__________0
    tablo ve içindeki veriler bu şekilde.
    Current tablosuna bakıldığında PRODUCTSPK 1 olan yani Norton Antivirüs şuan stokta bulunmamakta. MOTION 1 ile Norton Antivirüs 5 adet alınmış ve MOTION 0 ile 2+3 adet satılmış. benim istediğim ise mesela Yazılım alanında toplam kaç ürün alınmış (10), Toplam maliyeti (5*250+5*60 = 1550), Satılan ürün sayısı (2+3 = 5), Satılan üründen gelen para (2*70+3*80).
    Şimdiden teşekkürler.

    Yazılım alanında toplam kaç ürün alınmış
    select sum(amount) as alinantoplam from current where productspk in (select pk from products where categorypk = 1) and motion = 1
    Toplam maliyeti
    select sum(amount*pricedollar) as toplammaliyet from current where productspk in (select pk from products where categorypk = 1) and motion = 1
    Satılan ürün sayısı
    select sum(amount) as toplammaliyet from current where productspk in (select pk from products where categorypk = 1) and motion = 0
    Toplam gelen para
    select sum(amount*pricedollar) as gelenpara from current where productspk in (select pk from products where categorypk = 1) and motion = 0
    soruyu sorarken bi tablolari oluşturmak için sql dosyalarinizide ekleseydiniz. cevap vermek 10 dakika almazdı.

    Belki sonra soruya erişenler olur diye sql dosyasi şu şekilde
    # MySQL-Front Dump 2.5
    #
    # Host: localhost   Database: test
    # --------------------------------------------------------
    # Server version 4.1.22-community-nt
    
    
    #
    # Table structure for table 'category'
    #
    
    CREATE TABLE category (
      pk int(11) default NULL,
      nameis varchar(200) default NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    
    
    #
    # Dumping data for table 'category'
    #
    
    INSERT INTO category VALUES("1", "Yazilim");
    INSERT INTO category VALUES("2", "Mouse");
    INSERT INTO category VALUES("3", "Ekran Kart");
    
    
    #
    # Table structure for table 'current'
    #
    
    CREATE TABLE current (
      pk int(11) default NULL,
      productspk int(11) default NULL,
      amount int(11) default NULL,
      pricedollar int(11) default NULL,
      motion int(11) default NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    
    
    #
    # Dumping data for table 'current'
    #
    
    INSERT INTO current VALUES("1", "4", "20", "150", "1");
    INSERT INTO current VALUES("2", "3", "50", "7", "1");
    INSERT INTO current VALUES("3", "2", "5", "250", "1");
    INSERT INTO current VALUES("4", "1", "5", "60", "1");
    INSERT INTO current VALUES("5", "1", "2", "70", "0");
    INSERT INTO current VALUES("6", "1", "3", "80", "0");
    INSERT INTO current VALUES("7", "4", "10", "160", "0");
    
    
    #
    # Table structure for table 'products'
    #
    
    CREATE TABLE products (
      pk int(11) default NULL,
      nameis varchar(200) default NULL,
      categorypk int(11) default NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    
    
    #
    # Dumping data for table 'products'
    #
    
    INSERT INTO products VALUES("1", "Norton Antivirirus", "1");
    INSERT INTO products VALUES("2", "Adobe Reader Pro", "1");
    INSERT INTO products VALUES("3", "Usb Mini Mouse", "2");
    INSERT INTO products VALUES("4", "Radion Ekran Karti", "3");
  • 01-02-2009, 22:24:48
    #5
    selam sdemirkeser yardımından dolayı teşekkürler. Ben bunu tek view içinde yapmak istemiştim. Bu şekilde teker teker yapabilirdim işin açıkcası. Tek bir view içinde bunları bulmanın yolu yokmu peki?
  • 02-02-2009, 02:12:35
    #6
    Tek satırlık kod haline getirdiğim şu şekilde fakat halen view şekline getiremiyorum.

    SELECT
    IFNULL(SUM(AMOUNT),0) AS SUMAMOUNT,
    IFNULL(SUM(AMOUNT*PRICEDOLLAR),0) AS SUMPRICEDOLLAR,
    IFNULL(SUM(IF(MOTION = 'C',AMOUNT,0)),0) AS SUMSELLAMOUNT,
    IFNULL(SUM(IF(MOTION = 'G',AMOUNT,0)),0) AS SUMSTOCK
    FROM 
    CURRENT
    WHERE PRODUCTSPK IN (
    SELECT PK from PRODUCTS
    WHERE CATEGORYPK = 2
    )
  • 02-02-2009, 08:55:20
    #7
    Üyeliği durduruldu
    verdigim datalari join japabilirdiniz kritersiz

    select * from
    
    (select sum(amount) as sorgu1 from current where productspk in (select pk from products where categorypk = 1) and motion = 1)  as t1
    
    join
    
     (select sum(amount*pricedollar) as sorgu2 from current where productspk in (select pk from products where categorypk = 1) and motion = 1)as t2  
    
    join 
    
    (select sum(amount) as sorgu3 from current where productspk in (select pk from products where categorypk = 1) and motion = 0 ) as t3
    
    join 
    
    (select sum(amount*pricedollar) as sorgu4 from current where productspk in (select pk from products where categorypk = 1) and motion = 0  )as t4
  • 20-04-2009, 03:18:35
    #8
    Konuya bakmadığım için - Rep vermissin Teşekkür ederim Ben yazdığım kodtan sonra view şekline getirmekten vazgeçtim ve kodlamayı bitirip şehirdışına çıktım. Yaklaşık 2 hafta şehir dışındaydım ve geri gelince girdim. Fakat sorunu geçtiğimden aklıma gelmedi soru Kusura bakmayasın. İlgilendiğin için teşekkür ederim

    - Rep verdiğin için + Rep