2017-10-28 5 views
0

Ich habe eine Tabelle formal genannt:Suche Spalte Minimalwert und Minimalwert Spaltenname

id date   name  d1 d2  d3  d4 
1 20/10/2017 bimal 6  7  8  9 
2 20/10/2017 kumar 13 10  11  12 
3 20/10/2017 aman  16 17  14  15 
4 20/10/2017 halim 25 21  23  16 

I Spalte weise min benötigen. Wert. h. d1 = 6 + 13 + 16 + 25 = 60, d2 = 7 + 10 + 17 + 21 = 55, d3 = 8 + 11 + 14 + 23 = 56, d4 = 9 + 12 + 15 + 19 = 52.

Hier als untere Spalte ist d4. also mein min _value col wird 9,12,15,19 sein.

Meine nächste Spalte ist min_value_col. Es wird einfach d4, d4, d4, d4 sein.

Jetzt wird meine Ausgabetabelle sein als:

id date   name  d1 d2  d3  d4 min_value min_value_col 
1 20/10/2017 bimal 6  7  8  9 9    d4 
2 20/10/2017 kumar 13 10  11  12 12    d4 
3 20/10/2017 aman  16 17  14  15 15    d4 
4 20/10/2017 halim 25 21  23  16 16    d4 

Ich brauche min_value und min_value_col Feld jeweils durch mysql Abfrage zu füllen.

+0

Sie die Spalte aktualisieren, mit welcher Sprache wie PHP oder irgendetwas anderes ?? –

+0

Ich möchte die Spalte mit PHP und MySQL aktualisieren. –

+0

können Sie bitte Tabellenerstellung und Beispieldatenerstellung SQL-Skript teilen? – seahawk

Antwort

0

Sie scheinen zu wollen:

select f.*, 
     (case ff.least_col 
      when 'd1' then d1 
      when 'd2' then d2 
      when 'd3' then d3 
      when 'd4' then d4 
     end) as least_val, 
     ff.least_col 
from formal f cross join 
    (select least(sum(d1), sum(d2), sum(d3), sum(d4)) as least_val, 
      (case least(sum(d1), sum(d2), sum(d3), sum(d4)) 
        when sum(d1) then 'd1' 
        when sum(d2) then 'd2' 
        when sum(d3) then 'd3' 
        when sum(d4) then 'd4' 
       end) as least_col 
     from formal 
    ) ff; 
0

folgende Abfrage geben beide min_value und min_value_col:

select id,fr_date,name,d1,d2,d3,d4, 
    @min_value_col:=case when least_sum= sum_d1 then 'd1' when 
    least_sum= sum_d2 then 'd2' when least_sum= sum_d3 then 'd3' 
    when least_sum= sum_d4 then 'd4' end min_value_col, 

    case @min_value_col when 'd1' then d1 when 'd2' then d2 
    when 'd3' then d3 when 'd4' then d4 end min_value 
from formal, 
    (select sum(d1) sum_d1,sum(d2) sum_d2,sum(d3) sum_d3, sum(d4) sum_d4, 
    least(sum(d1),sum(d2),sum(d3),sum(d4)) least_sum 
      from formal) TEMP