Czy da się wykonać taką operację w mysql

0

mam takie pytanie jest sobie tabela w niej są pola
user = admin
pole_1 wartość od -20 do 20
pole_2 wartość od -20 do 20
pole_3 wartość od -20 do 20
pole_4 wartość od -20 do 20
pole_5 wartość od -20 do 20
pole_6 wartość od -20 do +20
pole_7 wartość od -20 do 20
pole_8 wartość od -20 do 20
pole_9 wartość od -20 do 20
pole1 wartość od -20 do 20
pole2 wartość od -20 do 20
pole3 wartość od -20 do 20
pole4 wartość od -20 do 20

A tu są przykładowo dane

pole_1 wartość od -18
pole_2 wartość od -16
pole_3 wartość od -15.5
pole_4 wartość od -10
pole_5 wartość od -4
pole_6 wartość od -3.5
pole_7 wartość od -1
pole_8 wartość od 0
pole_9 wartość od 1
pole1 wartość od 3
pole2 wartość od 4
pole3 wartość od 10
pole4 wartość od 19

I teraz wartości w każdym polu zaczynąjącym się od słowa pole może mieć wartość typu float od -20 do +20

i teraz na wejściu będzie liczba 1.5 (przykładowo może być inna)

I moje pytanie jest takie czy da się skonstruować zapytanie, które by pobrało tą wartość 1.5 i zwróciło nazwę dwóch sąsiednich pól, i ich wartości.
Czyli jak mamy liczbę 1.5 to zwróci nazwy pól pole_9 i drugie pole pole1 i wartości tych pól.

2

Tak da sie

2

Może jestem jakiś głupi ale nic z tego bełkotu nie zrozumiałem ...

3

Gosc chce podac wartosc i dynamicznie przeszukac wszystkie kolumny zaczynajace sie od pole i zwrocic to konkretne (w tym wypadku 1.5 to pole_9) pole_x oraz nastepna kolumne po pole_9 dosc zlozone ale mozliwe do zrobienia

0

No to będę musiał pokombinować na razie w czystym sql, może się uda to przerzucić do modeli w laravelu.

2
select pole_1 as war1, pole_2 as wart2, 'pole_1' as nazwa1, 'pole_2' as nazwa2 from tabela where 1.5 between pole_1 and pole_2 
union
select pole_2 as war1, pole_3 as wart2, 'pole_2' as nazwa1, 'pole_3' as nazwa2 from tabela where 1.5 between pole_2 and pole_3 
union

....itd...
Select zwróci ci tylko jedną z unii, będziesz miał wartości i nazwy tych pól

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.