• 02-06-2018, 13:39:48
    #1
    Merhaba,

    MySQL sütununa göre döngü oluşturmak istiyorum. Nasıl yapabilirim acaba? Bir yöntem biliyorum ancak ayrı ayrı kod olmadanda hallolabileceğini düşünüyorum.

    Şöyle ki,

    "veriler" diye bir tablomuz olsun.
    "sembol, fiyat, borsa" diye sütunlar olsun.

    Ben şöyle listeletmek istiyorum,

    Sembol: BTC
    ID: 1, Fiyat: 40000, Borsa: BTCTurk
    ID: 2, Fiyat: 40000, Borsa: Paribu

    Sembol: XRP
    ID: 3, Fiyat: 2, Borsa: BTCTurk
    ID: 4, Fiyat: 2, Borsa: Paribu

    Yani aynı olan "sembol" sütunu verileri tek bir başlık altında (Sembol: BTC), nasıl gösterebilirim?

    Normal veri çekme işlemini WHERE sembol='BTC' yapıp olabilir tabii, ancak bu sefer kodu sürekli çoğaltmam gerekicek.

    Bunu direk otomatik oluşturmanın yolu var mıdır?
  • 02-06-2018, 14:02:13
    #2
    Semboller diye bir tablo ac. Sembolleri orada tut. Veriler icerisinde sembol_id yi yazdirip istedigin yerde istedigin sekilde islem yap.
  • 02-06-2018, 15:14:32
    #3
    sembole gore gurupla



    Vin adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    MySQL sütununa göre döngü oluşturmak istiyorum. Nasıl yapabilirim acaba? Bir yöntem biliyorum ancak ayrı ayrı kod olmadanda hallolabileceğini düşünüyorum.

    Şöyle ki,

    "veriler" diye bir tablomuz olsun.
    "sembol, fiyat, borsa" diye sütunlar olsun.

    Ben şöyle listeletmek istiyorum,

    Sembol: BTC
    ID: 1, Fiyat: 40000, Borsa: BTCTurk
    ID: 2, Fiyat: 40000, Borsa: Paribu

    Sembol: XRP
    ID: 3, Fiyat: 2, Borsa: BTCTurk
    ID: 4, Fiyat: 2, Borsa: Paribu

    Yani aynı olan "sembol" sütunu verileri tek bir başlık altında (Sembol: BTC), nasıl gösterebilirim?

    Normal veri çekme işlemini WHERE sembol='BTC' yapıp olabilir tabii, ancak bu sefer kodu sürekli çoğaltmam gerekicek.

    Bunu direk otomatik oluşturmanın yolu var mıdır?
    https://dev.mysql.com/doc/refman/8.0...modifiers.html
  • 02-06-2018, 15:25:08
    #4
    Gruplama yapabilirsiniz.
    https://www.w3schools.com/sql/sql_groupby.asp
  • 02-06-2018, 17:59:41
    #5
    Yalnız anladığım kadarıyla GROUP BY tekrarlanmayı önlüyor.
    İki tane sembol='BTC' var ise, yalnızca 1 tane gösteriyor.

    Benim yapmaya çalıştığım verileri çekerken 3 tane BTC var ise; BTC: 1,2,3. şeklinde sıralamak. 2 tane XRP var ise tekrar alta geçip, XRP: 1,2. şeklinde sıralamak.
  • 02-06-2018, 23:35:24
    #6
    İstediğini yapmanın birçok farklı yolu olabilir;

    1. Yol - Sürekli veritabanına sorgu çekerek;
      • İlk olarak aşağıdaki gibi bir sorguyla, tabloda bulunan sembolleri alırsın. Daha sonra da aldığın semboller için "for" veya "foreach" döngüsü oluşturursun.
        SELECT DISTINCT(sembol) FROM veriler
      • Her sembol için veritabanından tekrar sorgulama yaparak, fiyat, borsa ve id bilgilerini istediğin şekilde çeker ve o satırları yazdırmak içinde ilk oluşturduğumuz döngünün içine bir tane daha "for" veya "foreach" döngüsü oluşturursun.
    2. Yol - Tek sorguda bitirmek.
      • Veritabanından tüm verileri sembol ve id ye göre "order by" yaparak çekersin. Böylece her sembol ait satırlar bir arada olmuş olur.
      • Bu sefer tüm kayıtlar için tek bir döngü çalıştırırsın.
      • Aynı zamanda döngü dışında $son_sembol gibi bir değişken tanımlarsın.
      • Döngü içerisinde $son_sembol ile o anda aldığın satırın sembol sütununu karşılaştırırsın.
      • Farklı ise, önceki sembolün kapanışını ve yeni sembolün başlangıç çıktılarını ekrana yazdırırsın.
      • son olarakta $son_sembol'u de yeni sembolle değiştirirsin.

    veya 2. yoldaki gibi yine tek seferde verileri çeker, sembollere göre dizilerde toplar, en sonra çıktı verirsin.