SQL Oracle, może VBA

0

Hej,

Mam zadanie do rozwiazania, ale nie wiem jak je ugryźć.
Nie jestem pewien czy to odpowiednie miejsce aczolwiek nie wiedzialem gdzie sie zwrocic.

Krzysiek i Tomek skomentowali profil_1, można więc stwierdzić pewne powiazanie miedzy nimi.
Krzysiek i Andrzej skomentowali profil_2 i sytuacja jest podobna.
Powiazania te sa bezposrednie. Posrednim powiazaniem mozemy nazwać powiazanie miedzy Tomkiem, a Andrzejem,
poniewaz laczy ich wspolna osoba: Krzysiek. W ten sposob mozemy podzielić te osoby na grupy. Dodatkowo Tomek bedzie powiazany, z każda osoba ktora posrednio lub bezposrednio
jest powiazana z Andrzejem.

Pytanie jest: ile jest takich grup, powiazan.

Tutaj oczywiscie nie wrzucilem calego zadania z danym,i ktorych sa tysiace rekodow tylko tresc.
Prosilbym jedynie o naprowadzenie na rozwiazanie lub pseudokod.
Jeżeli beda dodatkowe pytania albo niejasnosci od razu sprostuje.

Pozdrawiam

0

W języku teorii grafów, masz graf nieskierowany, węzłami są osoby, krawędź występuje pomiędzy X i Y gdy istnieje profil który X i Y skomentowali lub gdy istnieje ścieżka X P1 ... PN Y w grafie.
Ty musisz dokonać dekompozycji grafu na spójne podgrafy.

W SQL brzmi jak standardowe użycie CTE, zaczynasz od pojedynczej osoby i dokładasz do tego zbioru wszystkie osoby które są połączone krawędzią z jakąś osobą z tego zbioru. Każdy taki zbiór możesz tagować np. min id osoby która się w nim znajduje. Liczba krawędzi w grupie to po prostu liczba komentarzy po profilem (o ile się nie mylę - kofeina nie osiągnęła jeszcze wymaganego poziomu).

Tutaj masz coś podobnego (na graf skierowany): https://stackoverflow.com/questions/35254260/how-to-find-all-connected-subgraphs-of-an-undirected-graph

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