Aiuto progetto MySQL

di il
4 risposte

Aiuto progetto MySQL

Salve, sto lavorando ad un progetto universitario con mysql workbench. 
Sto trovando difficoltà nel realizzare una query che mi è stata assegnata dal professore. 
Il progetto in questione simula la gestione di tracce aere. 

La query in questione chiede: dati due voli di linea, riportare il numero di zona condivise dalle rotte dei due voli. 

A tal proposito, tra tutte,  ho realizzato due tabelle

Tabella VOLO DI LINEA contenente tutte le informazioni dei voli di linea 

Tabella ROTTA che contiene, oltre ad un proprio id, anche i codici di ogni zona attraversata da essa, mi spiego meglio: abbiamo suddiviso la superficie europea in dei quadranti, ciascuno dei quali corrisponde ad una zona. All’interno della tabella quindi sono presenti più colonne relative alle zone(codice zona 1, codice zona 2, codice zona 3 ecc.), ovviamente la prima colonna relativa al codice è not null, poiché anche per i voli interni, ad esempio ROMA-MILANO abbiamo assunto che il volo attraversasse solo una singola zona, quindi tu te le altre colonne saranno NULL, mentre man mano che il volo attraversa più zone anche le colonne si riempiono. 
A questo punto mi domandavo come potevamo risolvere la query che ci è stata assegnata, abbiamo provato con il count attraverso una query annidata ma nel migliore dei casi, anche se due voli hanno 5 zone in comune, ci restituisce sempre e solo una singola zona. 
Qualcuno ha qualche idea?

4 Risposte

  • Re: Aiuto progetto MySQL

    Proponi la query che hai scritto tu e vediamo se si può dare qualche consiglio o idea che può portarti ad una soluzione, che non potremo darti come capirai, essendo un compito…

  • Re: Aiuto progetto MySQL

    19/05/2024 - Mpgabbo ha scritto:


    dati due voli di linea, riportare il numero di zona condivise dalle rotte dei due voli. 

    Sapendo che ogni volo percorre n spazi aerei, tu come faresti con carta e penna a segnare gli spazi aerei in comune tra due voli?

  • Re: Aiuto progetto MySQL

    Questo è il codice su cui sto lavorando attualmente: 

    SELECT COUNT(CASE WHEN A.CODICE_ZONA = B.CODICE_ZONA THEN 1 END ) AS ZONE
    FROM
       (SELECT 
           V.VOLO_ID,
               V.ROTTA_ID,
               R.CODICE_ZONA,
               R.CODICE_ZONA_2,
               R.CODICE_ZONA_3
       FROM
           VOLO_DI_LINEA V
       JOIN ROTTA R ON V.ROTTA_ID = R.ID
       HAVING V.VOLO_ID = 4) A
           JOIN
       (SELECT 
           V.VOLO_ID,
               V.ROTTA_ID,
               R.CODICE_ZONA,
               R.CODICE_ZONA_2,
               R.CODICE_ZONA_3
       FROM
           VOLO_DI_LINEA V
       JOIN ROTTA R ON V.ROTTA_ID = R.ID
       HAVING V.VOLO_ID = 2) B ON A.CODICE_ZONA = B.CODICE_ZONA

  • Re: Aiuto progetto MySQL

    Io ti direi di creare la query dei voli in comune e metterla dentro una query che conta i record della prima query…

    Prima risolvi un problema e poi usi i dati di risposta per il secondo problema.

Devi accedere o registrarti per scrivere nel forum
4 risposte