2013-09-21 19 views
6

Desidero selezionare i valori min max e max min per ciascun valore in table1 da un'altra tabella2. campione di ingressoSELEZIONE min min e max min valore da una parte di una tabella in MySQL

table2 
name, value,y 
f1, .01,.04 
f1,.02,.05 
f1,.05,.06 
f1,.45,.07 
f2,.03,.09 
f2,.05,.02 

table1 
name, value 
f1, .04 
f2,.04 

expected output 
table3 
name, value,min_max-value,max_min-value,y(min_max-value),y(max_min-value) 
f1, .04,.02,.05,.05,.06 
f2,.04,.03,.05,.09,.02 

risposta

2

È possibile ottenere i valori MAX e MIN da T2 con la seguente query:

SELECT 
    t1.name, 
    t1.value, 
    (SELECT min(value) FROM table2 t2 WHERE t2.name = t1.name), 
    (SELECT MAX(value) FROM table2 t2 WHERE t2.name = t1.name) 
FROM table1 t1 

EDIT: Per ottenere i valori più vicini alla t1.value ed il corrispondente valore y si potrebbe fare :

SELECT 
    t1.NAME, 
    t1.value, 
    (SELECT MAX(t2.value) 
     FROM table2 t2 
     WHERE t2.NAME = t1.NAME AND t2.value < t1.value) AS maxmin, 
    (SELECT MIN(t2.value) 
     FROM table2 t2 
     WHERE t2.NAME = t1.NAME AND t2.value > t1.value) AS minmax, 
    (SELECT t2.y 
     FROM table2 t2 
     WHERE t2.NAME = t1.NAME AND t2.value = (
      SELECT MAX(t3.value) 
      FROM table2 t3 
      WHERE t3.NAME = t1.NAME AND t3.value < t1.value 
      )) AS ymaxmin, 
    (SELECT t2.y 
     FROM table2 t2 
     WHERE t2.NAME = t1.NAME AND t2.value = (
      SELECT MIN(t3.value) 
      FROM table2 t3 
      WHERE t3.NAME = t1.NAME AND t3.value > t1.value 
      )) AS yminmax 
FROM table1 t1 

vederlo in this fiddle

+0

sRY ..è non sta dando ex risultato pect – Karunakar

+0

@ user2795017 Perché dici che non sta dando i risultati attesi? Vedi [questo violino] (http://sqlfiddle.com/#!2/14597/1) per vederlo funzionare. Ah. qual è il tipo di dati per valore? –

+0

ciao .. vedere il mio output atteso e cross verificare con ur output ... ho passato attraverso ur output..it non corrisponde – Karunakar