Buduję analizę sieci za pomocą D3.js, aby wyświetlić połączone numery telefonów w mojej aplikacji do sześciu stopni separacji. SQL (postgres) do znalezienia początkowych połączeń jest poniżej i dość prosty. Jednak jestem zaskoczony, jak to zmienić, aby przejść przez sześć poziomów połączeń, a następnie przestać.Zapytanie SQL 6 stopni separacji dla analizy sieci
SELECT player_id, ps.player_state, ps.email, ph.create_date
FROM game.phone_hashes ph
INNER JOIN game.customer_settings cs ON cs.id = ph.player_id
WHERE hash IN (SELECT hash FROM game.phone_hashes WHERE player_id = $1);
znalazłem wzmianki o wspólnym stole wyrazu (CTE) i rekursji poprzez badania nad tym problemem, ale jestem pewien, jak zastosować je tutaj.
Celem moich działań jest doprowadzenie wszystkich graczy połączonych do początkowego gracza (1 $) za pośrednictwem zwykłego skrótu telefonicznego, a następnie do wszystkich graczy podłączonych do każdego z tych połączeń za pośrednictwem zwykłego skrótu telefonicznego, i włączania i wyłączania do 6 stopni separacji.
Proszę edytować swoje pytanie i dodać definicję ("Utwórz tabelę") zaangażowanych tabel. –
Ponadto często pomaga zrozumieć pytanie, czy pytanie zawiera przykład - kilka wierszy danych i jaki wynik zapytania powinien być oparty na tych przykładowych danych. –
Definicja tabeli ** ** jest tym, co dostajesz z '\ d game.phone_hashes' w psql. Lub kompletny skrypt 'CREATE TABLE'. –