Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Esercizio SQL...non va

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    225

    Esercizio SQL...non va

    Ciao ragazzi! Ho un problemino con un esercizio in sql..

    Ho il seguente schema:
    AEROPORTO(citta, nazione, numPiste)
    VOLO(idVolo, giornoSett, cittaPartenza, oraPartenza, cittaArrivo, oraArrivo, tipoAereo)
    AEREO(tipoAereo, numPasseggeri, qtaMerci)

    - Trovare le città cui partono solo aerei verso l'estero
    Io ho provato così:

    Codice PHP:
    SELECT tab1.cittaPartenza
    FROM 
    (SELECT Volo.cittaPartenzaVolo.cittaArrivoAeroporto.nazione
              FROM Volo JOIN Aeroporto
              WHERE Volo
    .cittaPartenza Aeroporto.citta) AS tab1
    JOIN 
    (SELECT Volo.cittaPartenzaVolo.cittaArrivoAeroporto.nazione
            FROM Volo JOIN Aeroporto
            WHERE Volo
    .cittaArrivo Aeroporto.citta) AS tab2
    WHERE tab1
    .nazione <> tab2.nazione 
    ma non va....uff

  2. #2
    Se vuoi un consiglio prendi un bel manuale!

    select volo.cittapartenza
    from aereoporto,volo
    where volo.cittaarrivo=aereoporto.citta and nazione<>'Italia'

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    225
    se era così, non era affatto male.....il problema è che possono essere altre nazioni. Es:

    cittaPartenza - cittaArrivo
    -----------------------------
    Milano - Londra
    Pavia - New York
    Genova - Londra
    Genova - Madrid
    New York - Londra
    New York - San Paolo
    Milano - Genova
    Pavia - Genova

    Dovrebbe restituirmi:

    cittaPartenza
    -------------
    Genova
    New York

    In sostanza, devo trovarmi le città che hanno voli SOLO verso l'estero

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Devi lavorare per differenza insiemistica.

    codice:
    SELECT cittaPartenza
    FROM Volo
    WHERE cittaPartenza NOT IN(
       SELECT cittaPartenza
       FROM Volo, Aeroporto
       WHERE ((cittaArrivo = citta) AND (nazione = 'Italia'))
    );
    A meno di errori miei, questo è quello che viene fatto:

    1) La sottoquery estrae tutte le città che hanno per destinazione una città italiana.
    2) La query principale estrae tutte le città che non sono comprese in quelle estratte dalla sottoquery.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    225
    ma così non vale solo per l'italia? Questo dovrebbe valere per tutte le nazioni, come ho fatto nell'esempio:

    Milano ha voli verso la stessa nazione e verso l'estero
    Pavia ha voli verso la stessa nazione e verso l'estero
    Genova ha voli SOLO verso l'estero --> Quindi deve restituirla
    New York ha voli SOLO verso l'estero --> Quindi deve restituirla

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da Danelius
    ma così non vale solo per l'italia? Questo dovrebbe valere per tutte le nazioni, come ho fatto nell'esempio:

    Milano ha voli verso la stessa nazione e verso l'estero
    Pavia ha voli verso la stessa nazione e verso l'estero
    Genova ha voli SOLO verso l'estero --> Quindi deve restituirla
    New York ha voli SOLO verso l'estero --> Quindi deve restituirla
    Veramente nell'esempio si capiva solo che non dovevano avere voli verso l'italia... ad ogni modo il suggerimento su come procedere l'hai avuto... non ti rimane che adattarlo.
    Tutto quello che devi fare è costruire la sottoquery in modo da estrarre tutte le città che hanno voli verso città della stessa nazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    225
    (nazione = 'Italia')
    però così vale solo per una nazione. Per tutte mi sa che non c'è soluzione...

  8. #8
    potresti costruire quel DB in Access, fare una query e poi vedere il codice SQL che ti restituisce


    e poi non penso che te lo consenta il regolamento..

    Hanno chiuso un tuo post uguale a questo Oo

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    225
    mmm....proverò con access come hai detto tu. Cmq, io non ho fatto nessuna richiesta....ho tentato d risolvere questa query ma niente da fare....per questo ho chiesto a voi
    Se non ci avessi provato, non sarebbe stato giusto nei vostri confronti , visto che non siete qui per trovare soluzioni a delle richieste, ma semplicemente per dare una mano a chi è in difficoltà (come me)

    Vi ringrazio sempre per la vostra disponibilità

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da Danelius
    mmm....proverò con access come hai detto tu. Cmq, io non ho fatto nessuna richiesta....ho tentato d risolvere questa query ma niente da fare....per questo ho chiesto a voi
    Se non ci avessi provato, non sarebbe stato giusto nei vostri confronti , visto che non siete qui per trovare soluzioni a delle richieste, ma semplicemente per dare una mano a chi è in difficoltà (come me)

    Vi ringrazio sempre per la vostra disponibilità
    Sì però per avere una mano devi anche prenderla quando ti viene data.

    Dal tuo ultimo post si capisce che non hai nemmeno cercato di leggere quello che ti ho detto.

    Mi dici «" nazione = 'Italia' " però così vale solo per l'Italia»... dimostrazione che non hai affatto letto il mio post precedente dove dicevo (e mi quoto)

    Tutto quello che devi fare è costruire la sottoquery in modo da estrarre tutte le città che hanno voli verso città della stessa nazione.
    Non mi pare di aver limitato all'Italia con questa frase... era il tuo esempio precedente che mi aveva tratto in inganno...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.