folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Mysql Sutun Adina Gore Veri Kumeleme?



Mysql Sutun Adina Gore Veri Kumeleme?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek

    Simdi atiyorum benim asagidaki gibi tablolarim var,

    meyveler
    ----------------
    id  |   meyve_ad
    1       armut
    2       elma
    
    #######
    
    sebzeler
    ----------------
    id  |   sebze_ad
    1       patlican
    2       enginar
    
    #######
    
    cuzdan_tipleri
    ----------------
    id  |   tip
    1       pembe kagit
    2       mavi kagit

    oyle bir sorgu yazayim ki bana

    title   |   data
    meyveler    elma,armut
    sebzeler    patlican,enginar
    cuzdan_tipleri  pembe kagit,mavi kagit

    dondurmeli.

    mumkun mudur yoksa tek tek query mi atayim :D?


    0x0480 takilin madem ﷽﷽﷽
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NoktaliVirgul
    NoktaliVirgul's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    https://www.mssqltips.com/sqlservertip/2914/rolling-up-multiple-rows-into-a-single-row-and-column-for-sql-server-data/

    böyle birşey mi?

    --

    edit: değilmiş ama fikir verir belki

    NoktaliVirgul tarafından 07/Oca/22 09:16 tarihinde düzenlenmiştir

    If my calculations are correct, when this baby hits eighty-eight miles per hour... you"re gonna see some serious shit.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    Bence tam olarak ne yapmak istediğini söyle ona göre yardımcı olalım.  Soru çok saçma, tablolar ondan daha saçma :) 

    İlla cevap istiyorsan group_concat ile joinleyip union all ile sorgularını birleştirebilirsin.

    select 'meyveler', GROUP_CONCAT(meyve_ad) as title from meyveler
    UNION ALL
    select 'sebzeler', GROUP_CONCAT(sebze_ad) as title from sebzeler
    UNION ALL
    select 'cuzdan_tipleri', GROUP_CONCAT(tip) as title from cuzdan_tipleri

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    tablo tasarımın normalizasyona uygun değil. 

    aslında olması gereken 

    Tur

    ----

    id name

    1 meyve

    2 sebze

    3 cüzdan

    data

    ---

    id name tur_id

    1 elma    1

    2 patates 2

     

    gibi olmalıydı. Ayrıca patlıcan sebze değil meyve :D

    en uygun cevap ise saybirs reyizin verdiği. 

    sLeymN tarafından 07/Oca/22 10:05 tarihinde düzenlenmiştir

    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo
    sLeymN bunu yazdı

    tablo tasarımın normalizasyona uygun değil. 

    aslında olması gereken 

    Tur

    ----

    id name

    1 meyve

    2 sebze

    3 cüzdan

    data

    ---

    id name tur_id

    1 elma    1

    2 patates 2

     

    gibi olmalıydı. Ayrıca patlıcan sebze değil meyve :D

    en uygun cevap ise saybirs reyizin verdiği. 

    meyve = üreme organı

    eğer içinde tohum varsa meyvedir. yoksa sebzedir.

    örn: domates, hıyar, kabak = çekirdeği var = meyve

    maydonoz, marul, lahana = çekirdeği yok = sebze


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    Hocam soyle bisey yaptim. keyler haric diger sutunlari birlsetirip veriyor. Umarim isini gorur Kolay gelsin.

    delimiter $$
    set @db_name = 'demo';
    set @active_data = '';
    
    
    drop procedure if exists show_data;
    create procedure show_data()
    begin	
    	declare table_count int;
        declare active_table_id int;
        declare active_table_name varchar(255);
        declare active_table_col_count int;
        declare active_col_id int;
        declare active_col_name varchar(255);
        
        set table_count = ( select count(table_name) FROM information_schema.tables where table_schema = @db_name );
        drop table if exists temp_my_tables;
        create temporary table temp_my_tables ( id int auto_increment primary key, table_name varchar(255));
        insert into temp_my_tables ( select null, TABLE_NAME FROM information_schema.tables where table_schema =  @db_name );    
        drop table if exists temp_active_table_cols;
        create temporary table temp_active_table_cols  ( id int auto_increment primary key, column_name varchar(255));
        drop table if exists temp_final_table;
        create temporary table temp_final_table ( id int auto_increment primary key , title varchar(255), data text ) ;
        
        set active_table_id = 1;
        while active_table_id <= table_count do
    		set active_table_name = ( select table_name from temp_my_tables where id = active_table_id );        
            insert into temp_active_table_cols ( select null, column_name from information_schema.columns where table_schema = @db_name and table_name = active_table_name and column_key = '' ) ;    
    		insert into temp_final_table values ( null , active_table_name , '' );
            
    			set active_table_col_count = (select count(*) from temp_active_table_cols );                        
    			set active_col_id = 1;	
    			while active_col_id <= active_table_col_count do
    				set active_col_name = ( select column_name from temp_active_table_cols where id = active_col_id );
                                   
                    set @s = concat('set @active_data = ( select GROUP_CONCAT(',active_col_name,') from ', active_table_name,' )');
                    prepare stmt1 from @s;
                    execute stmt1;
                    deallocate prepare stmt1;
                    
                    select @active_data;
                    update temp_final_table set data = concat(data,@active_data) where id = active_table_id;
                    
    				set active_col_id = active_col_id + 1;
                end while;
            
            truncate table temp_active_table_cols;
    		set active_table_id = active_table_id + 1;
        end while;        	
        select * from temp_final_table;
    end$$
    DELIMITER ;
    
    call show_data();
    
    
    
    

     


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek

    Arkadaşlar tabloyu gecenin bir yarısı gotumden uydurdum. Aklima daha yaratıcı bir şey gelmedi kusura bakmayin. Patlıcan ve domatesin meyve olduğunu da biliyorum, tablo tasarımının alakasız ve çok saçma olduğunu da. Fakat konu bu değil :)

    Tam olarak yapmak istediğim outputtan anlaşılıyor bence.

    3 farklı tablonun belirli spesifik sütunlarını gruplayıp, o sütunlara ait satırları unique bir şekilde karşılarına yazmak istiyorum.

    Json arraymış gibi hani.

    Yanitlariniz için çok teşekkür ederim, yeni uyandım, kendime gelince bakacağım.

    end tarafından 07/Oca/22 16:01 tarihinde düzenlenmiştir

    0x0480 takilin madem ﷽﷽﷽
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek

    mysql tarafında group_concat  veya mssql tarafında string_Agg ile yapabilirsin. önce bir select distinc at ondan dönen listeyi group concatle birleştir.  

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo
    end bunu yazdı

    Arkadaşlar tabloyu gecenin bir yarısı gotumden uydurdum. Aklima daha yaratıcı bir şey gelmedi kusura bakmayin. Patlıcan ve domatesin meyve olduğunu da biliyorum, tablo tasarımının alakasız ve çok saçma olduğunu da. Fakat konu bu değil :)

    Tam olarak yapmak istediğim outputtan anlaşılıyor bence.

    3 farklı tablonun belirli spesifik sütunlarını gruplayıp, o sütunlara ait satırları unique bir şekilde karşılarına yazmak istiyorum.

    Json arraymış gibi hani.

    Yanitlariniz için çok teşekkür ederim, yeni uyandım, kendime gelince bakacağım.

    mongodb kullansana ? db de js kodu çalıştırıp manipüle edebiliyosun verini


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek
    end bunu yazdı

    Arkadaşlar tabloyu gecenin bir yarısı gotumden uydurdum. Aklima daha yaratıcı bir şey gelmedi kusura bakmayin. Patlıcan ve domatesin meyve olduğunu da biliyorum, tablo tasarımının alakasız ve çok saçma olduğunu da. Fakat konu bu değil :)

    Tam olarak yapmak istediğim outputtan anlaşılıyor bence.

    3 farklı tablonun belirli spesifik sütunlarını gruplayıp, o sütunlara ait satırları unique bir şekilde karşılarına yazmak istiyorum.

    Json arraymış gibi hani.

    Yanitlariniz için çok teşekkür ederim, yeni uyandım, kendime gelince bakacağım.

    select 'meyveler', GROUP_CONCAT(distinct meyve_ad) as title from meyveler

    .....

    olmamı?


    |sadece aptalların başarısı ders notu ile ölçülür|
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    antichrist
    antichrist's avatar
    Kayıt Tarihi: 15/Ağustos/2021
    Erkek

    Hocam bunda SQL ile yapacağın masraf backend serviste yapacağın birkaç ufak müdahaleden daha çok olur. O sebeple standart belirtilmiş yapıların çok dışına çıkmamak lazım. Kümülatif işlemleri böyle zincirlerseniz ileride çok sorun yaşarsınız. Şu dediğini herhangi bir dilde yapıp array haline getirmek emin ol daha zahmetsiz. 

    Kısaca verdiğin örnekteki kullanım çok doğru bir mantık değil.


    ~
Toplam Hit: 2286 Toplam Mesaj: 15
sql