Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

SQL de iyi iseniz CEVAP verin

Konu, 'Veritabanları' kısmında ÝSMAÝL tarafından paylaşıldı.

  1. ÝSMAÝL

    ÝSMAÝL Yeni Üye

    Kayıt:
    10 Eylül 2002
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğretmen
    Şehir:
    MANİSA
    TABLE yapısı ağağıda

    ADI . PUANI .. BOLUMU
    A ...... 5 ...... 110
    B ...... 6 ...... 110
    C ...... 5 ...... 110
    D ...... 8 ...... 110
    E ...... 7 ...... 111
    F ...... 3 ...... 111
    G ...... 4 ...... 111
    H ...... 5 ...... 111
    I ...... 6 ...... 200
    J ...... 9 ...... 200
    K ...... 4 ...... 200
    . ...... . ...... .
    . ...... . ...... .
    şeklinde giden tabloda
    her bölümden puanı en yüksek olan 3 kişiyi alan SQL sözdizimini yapabilen varsa lütfen cevaplasın
     
    Son düzenleme yönetici tarafından yapıldı: 10 Eylül 2002
  2. mkarabulut

    mkarabulut Misafir

    Sonuç olarak istediğin recordset te tam olarak ne olacak ?
    Anladığım kadarıyla yapı olarak aynen verdiğin tablo gibi olacak ama sadece her bölümden ilk 3 e girmiş kişiler mi olacak ?

    biraz açarmısın ?
     
  3. Düzgün

    Düzgün Üye

    Kayıt:
    29 Temmuz 2002
    Mesajlar:
    206
    Beğenilen Mesajlar:
    0
    evet ismail sorununu biraz daha ayrıntılı yazman gerekli

    SELECT MAX(PUANI) AS PUANI, BOLUMU FROM
     
  4. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    Öncelikle hangi ortamda yazdığını, ne istediğini etraflıca anlat ki yeterli cevap alabilesin.

    Aaaa bak ben www.ceviz.net adresinde araştırdım ne buldum, bence sende araştır, hem daha kalıcı öğrenirsin :)

    buraya tıkla >>>> SQL Dili

    Kapsamlı olmasada işini görecek...
     
  5. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    mi acaba?..

    // Bu mesaji okumadan gecebilirsiniz.
    // Akisi bozmasin diye silmedim.
    // Gerekli aciklama var, merak ederseniz.

    Arkadaslar, arkadasin sordugu soru cok baba bir soru, kaynak arastirmayla bulunacak bir sey degil.

    Soyle bir sey onerebilirim:

    /* Mesajin bu bolumunu, yani cevabi kaldirdim. Dogru oldugundan emin olmadigim icin yanlis bilgilendirmek istemedim. Dogru cevabi asagida verdim. */

    Sozdizim olarak SQL-92'ye uygun. Ama mantıksal olarak garanti edemem, deneme şansım olmadı. Access'te filan denemeyin tabi, anlamaz boyle şeyleri. En iyisi Oracle'da denemek.

    Sonuçtan haberdar ederseniz sevinirim.

    (Bu arada, biraz kastırdı:) )
     
    Son düzenleme yönetici tarafından yapıldı: 13 Eylül 2002
  6. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    ahuahuahua :D çoook güzel...

    Sorry gelicem gelicem bi vakit buliim.
     
  7. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Selam,

    Soyle bi baktim da yukarida yazdigim SQL baya igrenc gorunuyor. Simdi soyle bir sey yaptim:

    SELECT ADI, PUANI, BOLUMU
    FROM OGRENCI OGR
    WHERE 3 > (
    SELECT COUNT(*)
    FROM OGRENCI
    WHERE PUANI > OGR.PUANI AND BOLUMU = OGR.BOLUMU);

    Bu sanirim olur.. Bu biraz ozel bir ifade, hakkinda makaleler bile yazilmis.. :) Cok orjinal bir cozum ama yine de emin degilim, cunku ORACLE'da deniyemedim bir turlu!.. :(

    Yok mu hayir sever deneyiverse.. Simdi koca Oracle'i kurdurmayin bana..

    (Acaba bu sefer tutturdum mu.. :) )
     
  8. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Selam,

    Sonunda Oracle'da deneme sansim oldu ve dogru calisiyor. Su sekli ile tamamdir:

    SELECT ADI, PUANI, BOLUMU
    FROM OGRENCI OGR
    WHERE 3 > (
    SELECT COUNT(*)
    FROM OGRENCI
    WHERE PUANI > OGR.PUANI AND
    BOLUMU = OGR.BOLUMU)
    ORDER BY BOLUMU, PUANI DESC;

    Kolay gelsin.
     
  9. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Su satırı bıraz acarmısın? Ornegın aynı seyı MySQL de de yapabılırmıyız? Yada mysql de uc asamada en ıyı ortalamaya sahıp ılk 20 ogrencı tek seferde cekılebılırmı? (vize,final,odev gıbı)

    Ayrıca bu where() kalıbının ısleyısı nasıldır ve MySQL ıcınde gecerlımıdır??

    Cevaplandırırsan sevınırım
     
  10. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Selam,

    Oncelikle, yeniyseniz bu sorgu ve benzerleri biraz ağır kaçar. Onun için daha temelden başlamanız lazım. Örneğin buradan: SQL

    WHERE ifadesi bize seçilecek kayıtlar için kıstas tanımlama olanağı verir ve oldukça temel bir SQL ifadesi oldugu için MySQL ve tüm SQL destekli sistemler destekler. Ama dediğim gibi, bu sorgu WHERE ya da başka bir ifadeyi öğrenmek için, başlangıç için ideal bir sorgu değil.

    Bu sorgunun tamamı ise MySQL'de derlenmez. MySQL iç içe sorguları desteklemiyor sanırım. Tabi ki mutlaka bir şekilde parcalara ayrılarak filan halledilebilir.

    Kolay gelsin.
     
  11. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Aslında pek yenı sayılmam en azından sql sorguları hakkında deneyıme sahıbım.. Ama yınede bu satırı anlamak benım ıcın zor.. Soyledıgın gıbı hıc bu turden ıc ıce kullanılmıs bır sorgu ornegı gormedım.. Ve aslında sordugum da buydu.. Evet where kalıbını bılıyorum ama where() gıbı bıseyle hıc karsılasmadım.. Bunu sormaktakı kastım da cok asamada cozumledıgım problemı tek bır SQL sorgusu ıle cozumlemek ıstegım.. Bu durumda bu konuyla ılgılı bır kaynak yada MySQL ın bunları yapabılecegıne daır bır bılgın varmı?
     
  12. ÝSMAÝL

    ÝSMAÝL Yeni Üye

    Kayıt:
    10 Eylül 2002
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğretmen
    Şehir:
    MANİSA
    Evet arkadaşlar. ( Ben en başta soruyu soran kişi)

    ee++

    adlı üyeye teşekkürler diğer arkadaşlar yok sistem ne yok ortam ne diye geçiştirmek yerine bilmediklerini söyleyebilirlerdi.
    Program olarak programcı arkadaşlar bilirlerki bunu proğram koduyla atıyorum 50 değişik yolla çözersin.

    Oracle cı arkadaşlar bilirler oracle de partision fonksiyonuylada iş çözülebilirdi biz ortam ACCESS idi pratik bir çözüm gerekiyordu SQL ile çabucak olacak gibi geldi ama işin içine girdiğimizde öyle basit tek satırlık SQL komutlarıyla olacak bir iş olmadığını anladık. Çözümü Accesin içine modul(VB ile ) yazarak hallettik ama çözümün SQL ilede olması gerektiğinden baştaki soruyu sormuştum.

    Tekrar ee++ kullanıcısına teşekkür.

    Gönderdiği SQL çalışıyor.
     
    Son düzenleme yönetici tarafından yapıldı: 16 Eylül 2002
  13. mkarabulut

    mkarabulut Misafir

    @Hunter: Bu işleme sub-select deniliyor ve maalesef mysql sub-select leri desteklemiyor.
    internette böyle aratırsan baya bi şey bulursun, şu dokumanda biraz bilgi var bi bak istersen :
    http://www.linuxfocus.org/English/July1998/article58.html

    Bu arada ee++, abi yavaş ol da yetişelim :)
     
    Son düzenleme yönetici tarafından yapıldı: 16 Eylül 2002
  14. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Estagfur'Allah...

    Bu arada MySQL'in ciddi eksiklerini de goruyoruz.. Kendisi SQL'e en az uyumlu sistemlerden birisi ne yazik ki. Ama iste son surumde hallocak cogu sorun sanirim, ama onlarin da kararli hale gelmesi cok vakit alabilir.

    @İSMAİL, teşekkurler.. :) Ama kimsenin hakkını da yemiyelim..

    Oracle'da (ve belki diger benzer gelismis sistemlerde) bunu halletmek icin sayisi yontem (PARTITION BY, row_number(), ...) bulunabilir. Ama bunlar oldukca karmasik sorgular olur, anlamasi guctur, oncelikle bicimsel olarak.. Bu sorgu da ise biraz dusununce hersey acik. Tek sorun performans kaybi olabilir. Zaten ben bu sorguyu SQL'in gucunu gostermek icin yazdim, yoksa isteyen performans degerlendirmesini yaparak daha gelismis sorgular yazabilir ya da uygulama ile halledebilir bu tur sorunlari.

    Bu konu hakkinda biraz da ŞURAYA yazdım. Buraya tekrar yazmıyayım, isteyenler belki yararlanabilir, biraz daha aciklama yapmistim orada.

    Ayrica diyip durdugumuz gelismis Oracle sorgularindan da bir tane yazabilirim buraya isterseniz. Ama belirteyim ben bu kadar karmasik sorgulardan pek anlamam ve sevmem de. Onun icin elimde hazir bulunan bir tane var, onu yazabilirim.

    Kolay gelsin.
     
    Son düzenleme yönetici tarafından yapıldı: 16 Eylül 2002
  15. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    .
     
    Son düzenleme yönetici tarafından yapıldı: 16 Eylül 2002
  16. norda_krepusko

    norda_krepusko Üye

    Kayıt:
    5 Ekim 2002
    Mesajlar:
    95
    Beğenilen Mesajlar:
    0
    Meslek:
    bt
    Şehir:
    @home
    ben bu sorunun aynisini ve ayni sql cumlesini bi yerden hatirliyorum ama... :hmmm:

    subselect olmadan cozulmeyecegini yaklasik 3 kusur saat kadar debelenerek anlamistim o yuzden beynime kazinmis,

    sanirim o zamanda ee++ ustat sormus, sonrada kendisi cevaplandirmisti....

    belkide soru 100% ayni degildi, ben oyle hatirliyorum...

    ne biliim,
     
  17. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Bu soruyu burada cevapladıktan sonra, ocal'a da bilgi olsun diye yazmıştım.
     
  18. norda_krepusko

    norda_krepusko Üye

    Kayıt:
    5 Ekim 2002
    Mesajlar:
    95
    Beğenilen Mesajlar:
    0
    Meslek:
    bt
    Şehir:
    @home
    ustat soru ayni soruydu di mi ?

    saatlerdir dusunuyorum, flash-back yasiyo gibi oldum bi anda, forumu yeniden yapilandiriyolar falan demeye basladim,

    neyse, gusel soru gusel cevap...
     
  19. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Evet aynı soru, aynı cevap..

    Zaten soru olarak değil İpucu olarak vermiştim orada.
     
  20. Beholder

    Beholder Üye

    Kayıt:
    17 Ekim 2002
    Mesajlar:
    76
    Beğenilen Mesajlar:
    0
    Meslek:
    Bilgisayarcı
    Şehir:
    Balıkesir
    Su subselect olayi nedir, gercekten merak ediyorum. Ve niye MySQL'de yok. Zira bende bir sorguda cok takilmis ocal.net'te sormustum. 2-3 asamadan sonra bir arkadas yazmisti sorguyu. Ordada gecti muhabbeti subselect felan diye. Yeni ögreniyorum kusura bakmayin lütfen.