Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    Query con errore di sintassi?

    Ciao, questa query mi produce un errore di sintassi sulla 4° riga ma proprio non capisco perché:

    select codice
    from atleta
    except
    select distinct (codiceatleta)
    from partecipazione;

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select distinct (codiceatleta)
    from partecipazione' at line 4

    Il fatto è che l'ho copiata pari pari dalle slide del prof e mi pare che il distinct si usi così.
    Scopo della query è selezionare gli atleti che non hanno mai partecipato a nessuna gara (tabella partecipazione, linkata ad atleta tramite codice).
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    se non sbaglio in MySQL non e' supportato l'operatore EXCEPT
    Non siate in ansia per la vostra vita; Guardate gli uccelli del cielo: non seminano, non mietono, non raccolgono in granai, e il Padre vostro celeste li nutre. Non valete voi molto più di loro? Cercate prima il regno e la giustizia di Dio, e tutte le altre cose vi saranno date in più.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ah...aivoglia io a impazzire. Vale anche per gli altri operatori insiemistici, UNION, INTERSECT?

    Comunque prima di vedere la soluzione del prof io stavo provando a fare la query così:
    select codice
    from atleta, partecipazione
    where (codiceatleta!=codice)
    group by codiceatleta;

    MA come risultato mi produce i codici degli atleti che hanno partecipato a qualche gara. A me serve estrarre quelli che non hanno mai partecipato a nessuna gara (i cui codici quindi non compaiono nella tabella "partecipazione").
    Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    da un occhiata qui : http://stackoverflow.com/questions/1...ept-in-a-query

    sostanzialmente suggeriscono di usare NOT IN oppure una LEFT JOIN per avere lo stesso effetto di EXCEPT
    Non siate in ansia per la vostra vita; Guardate gli uccelli del cielo: non seminano, non mietono, non raccolgono in granai, e il Padre vostro celeste li nutre. Non valete voi molto più di loro? Cercate prima il regno e la giustizia di Dio, e tutte le altre cose vi saranno date in più.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ma secondo te perché la mia query non fa quello che mi aspetto?
    Se ho capito bene dovrebbe succedere questo:
    - from fa il prodotto cartesiano delle due tabelle
    - si partiziona la tabella risultante secondo quanto chiesto dal group by
    - si selezionano le righe che soddisfano il where
    - si seleziona quanto richiesto dalla select
    E' così?

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Ma con MySql le sottoquery non si racchiudono fra parentesi ???
    .

  7. #7
    Ciao,

    MySQL non supporta il EXCEPT, UNION, INTERSECT e operatori comme MINUS. L'operatore INTERSECT prende i risultati di due query e restituisce solo le righe che compaiono in entrambi i set di risultati. L'operatore MINUS prende le righe distinte di una query e restituisce le righe che non appaiono in un secondo set di risultati. Siamo in grado di riscrivere le query utilizzando JOIN operator:

    Query di esempio:
    SELECT x, y FROM table_a
    INTERSECT
    SELECT x, y FROM table_b;

    In MySQL:
    SELECT a.x, a.y FROM table_a a
    JOIN table_b b
    ON a.x = b.x AND a.y = b.y;

    Cristiana,
    #OracleCloud

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    UNION è supportato da MySQL, perché affermi che non lo è?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Confermo che UNION è supportato da mysql.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.