Sto costruendo un'analisi di rete utilizzando D3.js per mostrare i numeri di telefono connessi all'interno della mia app fino a sei gradi di separazione. L'SQL (postgres) per trovare le connessioni iniziali è al di sotto e abbastanza semplice. Tuttavia, sono perplesso su come modificare questo per attraversare sei livelli di connessioni e poi fermarsi.Query SQL 6 gradi di separazione per l'analisi di rete
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);
ho trovato menzioni di espressioni di tabella comuni (CTE) e ricorsione attraverso la ricerca in questo problema, ma sono incerto come applicarli qui.
Quello che sto puntando è ottenere tutti i giocatori connessi al giocatore iniziale ($ 1) tramite un comune hash del telefono, quindi tutti i giocatori connessi a ciascuna di queste connessioni tramite un hash del telefono comune, e così via. fino a 6 gradi di separazione.
Si prega di modificare la tua domanda e aggiungere la definizione ('create table') delle tabelle coinvolte. –
Inoltre, spesso aiuta a capire la domanda se la domanda include un esempio: poche righe di dati e quale dovrebbe essere il risultato della query sulla base di questi dati di esempio. –
Una ** definizione tabella ** è ciò che si ottiene con '\ d game.phone_hashes' in psql. O lo script completo 'CREATE TABLE'. –