Query per generare percorso

di il
2 risposte

Query per generare percorso

Salve a tutti
Premetto che sono un neofita e molti dei miei problemi con PHP/SQL li ho risolti leggendo forum sparsi in rete (Sopratutto questo)

Volevo chiedervi come posso fare una query che mi generi un percorso a partire da una tabella che ha delle singole tratte,
Cerco di spiegarmi meglio, io ho una tabella con delle tratte es:
A---C
C---F
F---B
ecc.ecc.

Vorrei che la queri mi mostrasse dando com input partenza e arrivo il percorso ad esempio
Partenza A
Arrivo A
e dovrbbe portarmi come risultato tutte le tratte da eseguire in sequenza

A---C
C---F
F---B
B---C
C---D
D---G
G---A
è possibile ? potreste darmi indicazioni in merito ?

Vi ringrazio moltissimo in anticipo per il vostro aiuto

2 Risposte

  • Re: Query per generare percorso

    1) si chiama "teoria relazionale dei dati" che VA STUDIATA, invece di andare a casaccio su Internet
    2) si chiama "teoria dei grafi" quella che lega i nodi (A,B,...) mediante degli archi (A--B, B--C, ...), ed i concetti fondamentali VANNO STUDIATI invece di andare a capocchi su Internet
    3) NO, non si puo fare con l'SQL, SERVE un ""algoritmo""

    Update: sapevo che con le Common Table Expressions (CTE) era possibile navigare strutture gerarchice (ad albero), MA non sapevo che si potesse navigare anche un grafo. Pero' magari e' un'estensione recente .
  • Re: Query per generare percorso

    Salve,
    premetto che, visto che posti sul forum SQL Server, tu stia utilizzando appunto SQL Server...

    detto cio', la soluzione NON E' banale, e afferisce anche al cosidetto problema del "commesso viaggiatore", problemino notoriamente impegnativo .... nel tuo caso specifico, non proprio lo stesso problema, visto che al momento tu non specifichi anche quale ottimizzazione sia necessaria, ad esempio la "distanza" tra i "nodi" o altro, in modo da ovviamente avere il percorso piu' breve...

    @migliorabile perfettamente indica lo studio della teoria dei grafi, ma vorrei anche indicarti un bell'articolo che in SQL Server fa uso delle CTE per risolvere appunto il problema del commesso viaggiatore, accessibile presso https://www.sqlservercentral.com/articles/recursive-queries-in-sql1999-and-sql-server-2005
    buono stutdio

    salutoni romagnoli
    --
    Andrea
Devi accedere o registrarti per scrivere nel forum
2 risposte