• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapytanie rekurencyjne w MySQL

Object Storage Arubacloud
+1 głos
1,746 wizyt
pytanie zadane 24 czerwca 2018 w SQL, bazy danych przez Riddick Bywalec (2,600 p.)

Mam tabelę w bazie danych "kategorie" niektóre kategorie mają swoje podkategorie.
 

Kategorie
id id_parent nazwa

1

0 Kategoria 1
2 0 Kategoria  2
3 2 Kategoria 2.1
4 2 Kategoria 2.2
5 2 Kategoria 2.3
6 0 Kategoria 3
7 6 Kategoria 3.1
8 6 Kategoria 3.2
9 0 Kategoria 4

Jak za pomocą jednego zapytania SQL Otrzymać wynik na wzór drzewka:
Kategoria 1
Kategoria 2
--> Kategoria 2.1
--> Kategoria 2.2
--> Kategoria 2.3
Kategoria 3
--> Kategoria 3.1
--> Kategoria 3.2
Kategoria 4

Czytałem, że można zrobić zapytanie rekurencyjne aby coś takiego uzyskać jednak z wszelkich wpisów na ten temat nie potrafię za wiele zrozumieć. Co jeszcze dziwniejsze jedni piszą, że w SQL nie ma rekurencji inni podają żywe przykłady że to jest możliwe i w końcu nie wiem już czy da się czy nie da się a jak da to w jaki sposób. Próbowałem użyć przykładu z tej strony, konkretnie listing 5 http://www.artfulsoftware.com/mysqlbook/sampler/mysqled1ch20.html jednak nie działa to u mnie.

1 odpowiedź

+1 głos
odpowiedź 25 czerwca 2018 przez Wiciorny Ekspert (269,710 p.)
wybrane 25 czerwca 2018 przez Riddick
komentarz 25 czerwca 2018 przez Riddick Bywalec (2,600 p.)

Chciałbym zasymulować tą rekurencje na starszej wersji tylko trudno mi zrozumieć kod. Jestem programistą bardziej frontendowym niż backendowym i za często z sql nie pracuje i trudno mi zrozumieć ten kod. Czy mógłbyś mi jakoś po krótce wytłumaczyć o co chodzi z tym kodem?
 

CREATE VIEW D AS (SELECT YEAR, SUM(SALES) AS S FROM T1 GROUP BY YEAR);
SELECT D1.YEAR, (CASE WHEN D1.S>D2.S THEN 'INCREASE' ELSE 'DECREASE' END) AS TREND
FROM
 D AS D1,
 D AS D2
WHERE D1.YEAR = D2.YEAR-1;
DROP VIEW D;

Bo tutaj nie widzę elementu tworzącego drzewko chyba że nie na ten przykład patrze

komentarz 25 czerwca 2018 przez Chess Szeryf (76,710 p.)

To tworzy widok zapytania.

Skopiuj ten długi przykład na samym dole on tworzy procedurę i następnie wywołaj ją tak jak jest w przykładzie powyżej, czyli:

CALL WITH_EMULATOR( # ...

Na podstawie argumentów podawanych do wywołania utwórz sobie takie "drzewko", jakie chcesz.

komentarz 25 czerwca 2018 przez Riddick Bywalec (2,600 p.)
Ok. Jeśli dobrze rozumiem kopiuje ten długi kod i nie ruszam go a następnie dopisuje poniżej swój kod?
komentarz 25 czerwca 2018 przez Riddick Bywalec (2,600 p.)
Tylko znów mi wyskakuje błąd że WITH_EMULATOR nie istnieje
1
komentarz 25 czerwca 2018 przez Chess Szeryf (76,710 p.)

Tak, jeśli już skopiujesz to na podstawie mniej więcej tego:

call WITH_EMULATOR(
	"name_your_new_table",
	"query1",
	"query2",
	"query3",
	0,
	""
);

piszesz "drzewko" albo zmień coś w procedurze, jeśli coś jest tam niekompletnego lub jeśli chcesz własne funkcjonalności.

"name_your_new_table", to jest chyba nazwa tabeli do której będziesz się mógł odwoływać w zapytaniach (query1, query2, itd.), w przykładzie jest to "EMPLOYEES_EXTENDED".

Podobne pytania

0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 3 czerwca 2021 w SQL, bazy danych przez Gerlach Nowicjusz (220 p.)
0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 9 marca 2021 w SQL, bazy danych przez lulok7 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 204 wizyt
pytanie zadane 11 października 2015 w SQL, bazy danych przez Dawid Warduliński Obywatel (1,830 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...