[MySQL] Dwa pytania: Pivot kolumny, podzapytanie skorelowane

0

1)Na poczatku podam tresc zapytania oraz jego efekt

SELECT * FROM dane_2009 WHERE id_param in(8820,8821,8822)

user image

Teraz mam tak ze w pętli pobieram z każdego parametru wartość z danej godziny i wklepuję ją do StringGrida. A z racji że zależy mi na szybkości (parametrów jest dosyć dużo) to można by utworzyć tak zapytanie żeby kolumnami był parametr i kolejne rekordy to wartości z kolejnych godzin, i bezpośrednio wtedy władować to do DBGrida. Kłopot w tym że nie wiem jak efektownie utworzyć takie zapytanie.

Efekt wynikowy ma być taki:

ID_Param1 | ID_Param2 | ID_Param3
val h0 | val h0 | val h0
val h1 | val h1 | val h1
..
val h23 | val h23 | val h23

SELECT * FROM zaleznosci;

user image

Efekt jaki chce uzyskac jest nastepujacy:
Parametrem startowym niech bedzie np 8820. Z niego selectujemy ID_Parametr czyli mamy taka juz sytuacje:
8820 -> 8821 , i teraz chce znow wyselectowac ID_parametr na podstawie poprzedniego wyniku czyli teraz parametr = 8821 => select id_parametr where parametr=8821, i z niego mam dwa wyniki
8821 -> 8822,8823 i z tych dwoch wynikow znowu wyselectowac ID_Parametr...

Siedze nad tym zapytaniem i caly czas nie wychodzi. Chyba ze ma ktos inny pomysl na zapis tych rekordow, ale tak mi sie wydaje ze bedzie najoszczedniej.

na razie probowalem tak :

SELECT ID_Parametr from zaleznosci z where parametr = 8820 and parametr = (select id_parametr
from zaleznosci where parametr = z.id_parametr)
0
  1. Aż się prosi zastosować tutaj relację jeden-do-wielu

Tabela1: ID_dane, ID_param, Data, Typ
Tabela2: ID_dane, godzina, wartosc

  1. Szukaj w google pod pojęciami: sql drzewo, nested tree, nested sets

1 użytkowników online, w tym zalogowanych: 0, gości: 1