2 sonuçtan 1 - 2 arası sonuçlar
  1. #1

    Varsayılan farklı tablolardan sorgu..

    malzeme ozellikleri => id----malzeme_adi

    mazleme giris => ozellik_id----giris

    malzeme cikis => ozellik_id----cikis

    üç tablodaki alanlar bu şekilde. yapmak istediğim."malzeme ozellikleri" tablosundan her malzeme için (yani her "id" için) toplam "giris" ve toplam "cikis" ı hesaplatmak.
    yani: malzeme_ozellik.id=malzeme_giris.ozellik_id denkgelen malzemelerin girişlerini toplasın SUM(malzeme giris.giris). aynı sekilde malzeme_ozellik.id=malzeme_cikis.ozellik_id denkgelen malzemelerin çıkışlarını toplasın SUM(malzeme_cikis.cikis). ve bunu bana kendi belirlediğim bir tabloda geri döndürsün. ben şöyle bir sorgu yapıyorum ama olmuyor..

    SELECT malzeme ozellikleri.id AS id, malzeme_ozellikleri.malzeme_adi AS ad,SUM(malzeme giris.giris) AS toplam_giris, SUM(malzeme cikis.cikis) AS toplam_cikis FROM malzeme ozellikleri,malzeme giris,malzeme cikis WHERE malzeme ozellikleri.id=malzeme giris.ozellik_id AND malzeme ozellikleri.id=malzeme cikis.ozellik_id GROUP BY malzeme ozellikleri.id,malzeme ozellikleri.malzeme_adi;

    istediğim sonucu bu sorgu ile alamıyorum. aynı id ile farklı tablolara bağlanıp, bu tablolardan aldığım verileri yansıtmak istiyorum...

  2. Varsayılan Merhaba

    İlk adımdan başlayalım ve geliştirelim...

    1.

    Kod:
    Select mo.* from malzeme_ozellikleri mo
    2.

    Kod:
    Select mo.*, sum(mg.giris) as giristoplam
    from malzeme_ozellikleri mo 
    LEFT JOIN malzeme_giris mg ON mo.id = mg.ozellik_id
    group by mo.id
    Böylece Malzeme özelliklerindeki her malzemenin toplam girişlerini aldık ama !!!

    Eğer hemen diğer taoployuda left join ile aşağıdaki gibi eklersek hata yapmış oluruz.

    Kod:
    Select mo.*, sum(mg.giris) as giristoplam, sum(mc.cikis) as cikistoplam
    from malzeme_ozellikleri mo 
    LEFT JOIN malzeme_giris mg ON mo.id = mg.ozellik_id
    LEFT JOIN malzeme_cikis mc ON mo.id = mc.ozellik_id
    group by mo.id
    BU BIR HATADIR !!! Böyle yaparak malzeme cikislarını hem malzeme giriş hemde malzeme ozellikleriyle bagdaştırmış oluruz. ve 5-6 kat daha buyuk değerler alırız. Yapmamız gereken ise 2. adımı bir tablo olarak birleşik bir tablo olarak görmek. Dolayısıyla son adımımız....

    Kod:
    Select tablo1.*, sum(mc.cikis) as cikistoplam FROM
    (Select mo.*, sum(mg.giris) as giristoplam
    from malzeme_ozellikleri mo 
    LEFT JOIN malzeme_giris mg ON mo.id = mg.ozellik_id
    group by mo.id) tablo1 LEFT JOIN malzeme_cikis mc ON tablo1.id = mc.ozellik_id Group by tablo1.id
    Kolay gelsin... (imla hataları olabilir.)

Benzer Başlıklar

  1. Yanlış sorgu sonucu
    basarkaradag tarafından PHP forumunda
    Yanıt: 2
    Son Mesaj: 09.11.2005, 12:43
  2. mysql >> sorgu gönderirken where
    ishadami tarafından PHP forumunda
    Yanıt: 4
    Son Mesaj: 19.10.2005, 22:53
  3. Güncelleştirilebilir sorgu?
    PETERVARADIN tarafından ASP ve ASP.NET forumunda
    Yanıt: 2
    Son Mesaj: 30.11.2004, 22:39
  4. PHP mysql'de sorgu sorunu.
    atix tarafından Web ve Grafik Tasarımı forumunda
    Yanıt: 1
    Son Mesaj: 22.07.2004, 00:07
  5. Php Domain ..: Sorgu :..
    emreka tarafından Web ve Grafik Tasarımı forumunda
    Yanıt: 3
    Son Mesaj: 12.09.2003, 08:19

Gönderim İzinleri

  • Yeni başlık açamazsınız
  • Yanıt yazamazsınız
  • Eklenti gönderemezsiniz
  • Mesajlarınızı düzenleyemezsiniz
  •