2013-09-21 51 views
6

Tôi muốn chọn giá trị min tối đa và tối đa cho mỗi giá trị trong bảng 1 từ bảng 2 khác. mẫu đầu vàoCHỌN giá trị tối thiểu tối đa và tối đa từ một phần của bảng trong 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 

Trả lời

2

Bạn có thể nhận MAX và MIN giá trị từ t2 với truy vấn sau đây:

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: Để có được những giá trị gần gũi hơn với các t1.value và tương ứng với giá trị y bạn có thể làm :

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 

nhìn thấy nó trong this fiddle

+0

sry ..it là không cho ex pected result – Karunakar

+0

@ user2795017 Tại sao bạn nói nó không đưa ra kết quả mong đợi? Xem [this fiddle] (http://sqlfiddle.com/#!2/14597/1) để xem nó hoạt động. Ah. loại dữ liệu cho giá trị là gì? –

+0

hi..xem sản lượng dự kiến ​​của tôi và xác minh chéo với đầu ra ur ... tôi đã đi qua đầu ra ur .. nó không phù hợp với – Karunakar

Các vấn đề liên quan