Şimdi Ara

MSSQL çözemediğim sorgu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
5
Cevap
0
Favori
1.056
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • tablo1 = tblkat
    alanlar = katid, katadi, katsira

    tablo2 = tblurun
    alanlar = urunid, urunsira, urunkat

    Şimdi sorgu şöyle olacak

     
    rs = SELECT * FROM tblkat ORDER BY katsira DESC

    while (rs.read)
    {
    rs2 = SELECT TOP 1 * FROM tblurun WHERE urunkat = [b]rs["katid"][/b] ORDER BY urunsira DESC
    }

    Tam kod böyle değil ben mantığını kendimce şematize ettim.
    evet arkadaşlar basitçe tblkat tablosundan katsira'ya göre sıralanmış her kayıt için katid = urunkat olan ve urunsira değeri en yüksek alanları seçmeye çalışıyorum.
    Denemediğim GROUP BY, JOIN, UNION kalmadı olmuyor.
    SORUM ŞU : Ben bunu tek sorgu da yapabilir miyim?
    Teşekkürler.

    Bu arada ben bunu MYSQL'in Group by ile yapabiliyordum. MSSQL'de MIN, MAX gibi olaylar girince garip sonuclar cıkarıyorum. Belki doğrusunu MS yapıyor ama ben beceremedim



    < Bu mesaj bu kişi tarafından değiştirildi sonstiq -- 15 Aralık 2010; 19:53:10 >







  • Bu forum benim sorularıma cevap vermemekle ünlü :)
    İnanmıyorsanız profilime bakın. Heralde tam anlatamadım :)
    Biraz daha açayım

    urunid - urunkat - urunsira
    10 - 1 - 1
    11 - 1 - 2
    12 - 1 - 3
    13 - 2 - 1
    13 - 2 - 3
    13 - 2 - 4
    14 - 3 - 1

    katid - katadi - katsira
    11 - urun1 - 1
    9 - urun2 - 2
    8 - urun3 - 3

    BENİM İSTEDİĞİM SORGU SONUCU SU

    katid - katadi - katsira - urunid - urunkat - urunsira
    8 - urun3 - 3 - 14 - 3 -1
    9 - urun2 - 2 - 13 - 2 - 3
    11 - urun1 - 1 - 12 - 1 - 3

    katsira ya göre sıraladık her kategoriye ait olan urunsira numarası en büyük olan ilk kaydın urunid ve urunkat'ini aldık



    < Bu mesaj bu kişi tarafından değiştirildi sonstiq -- 17 Aralık 2010; 15:26:48 >
  • Şuna bezer bir sorgu işini görmüyor mu ? Ürün sıra nosu en yüksekten aşağı dogur sıralyor.
    SELECT u.urunid,u.urunkat,u.urunsira,k.katadi,k.katsira FROM tblurun u Left join tblkat k On u.urunkat=k.katid Order by u.urunsira desc
  • quote:

    Orijinalden alıntı: sonstiq
    evet arkadaşlar basitçe tblkat tablosundan katsira'ya göre sıralanmış her kayıt için katid = urunkat olan ve urunsira değeri en yüksek alanları seçmeye çalışıyorum.


    katid (8,9,11) ve urunkat (1,2,3) alanlarını nasıl eşitlediğinizi anlayamadım.

    ayrıca

    quote:

    Orijinalden alıntı: sonstiq
    urunsira numarası en büyük olan ilk kaydın urunid ve urunkat'ini aldık


    Bunu da anlamadım. Ya en büyük ya ilk olur, ki en büyük daha mantıklı.

    quote:

    Orijinalden alıntı: sonstiq
    9 - urun2 - 2 - 13 - 2 - 3

    bunun urunsira'sının 4 olması gerekmiyormu ?

    Neyse şöyle bir şey işinizi görür mü ?

     
    SELECT tblkat.katid, tblkat.katadi, tblkat.katsira,
    MAX(tblurun.urunid), tblurun.urunkat, MAX(tblurun.urunsira)
    FROM tblurun, tblkat
    WHERE tblkat.katsira = tblurun.urunkat
    GROUP BY tblkat.katid
    ORDER BY tblkat.katsira desc;



    < Bu mesaj bu kişi tarafından değiştirildi gergozen -- 22 Aralık 2010; 23:20:11 >




  • Arkadaşlar yardımcı olmaya çalışmaya çalışmışsınız sağolun ama sizin dediklerinizin hiç biri değil

    Left Joinle dizideki belirtilen bir kaydı çekemiyormuşsunuz MSSQL'de mysql'de Group By ile oluyorduç
    MSSQL'de LEFT JOIN Yerine OUTER APPLY kullanmak gerekiyormuş.

    Teşekkürler.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.