Visualizzazione dei risultati da 1 a 5 su 5

Discussione: dubbio query

  1. #1
    Utente di HTML.it L'avatar di mica81
    Registrato dal
    Nov 2003
    Messaggi
    87

    dubbio query

    non so se ho postato nel posto giusto... ad ogni modo, dato il seguente database:

    pazienti(cod_fiscale, nome, cognome, indirizzo, citta, datanascita,esenzione)
    visite(cod_dott, cod_paz, data, ambulatorio, importo_ticket)
    dottori(cod_fiscale, cognome, nome, cod_specializzazione, disponibile)
    ID_specializ(cod_spec, nome_ufficiale, descrizone)

    devo trovare nome e cognome dei dottori che hanno visitato nel 2008 almeno 10 persone nate a Pisa.

    secondo me la soluzione è questa:

    SELECT DISTINCT D.nome, D.cognome
    FROM dottori D INNER JOIN visite V ON D.cod_fiscale = V.cod_dott
    INNER JOIN pazienti P ON P.cod_fiscale = V.cod_paz
    WHERE V.data BETWEEN #1/1/2008# AND #31/12/2008# AND P.citta LIKE "Pisa"
    GROUP BY D.nome, D.cognome
    HAVING COUNT (*) > = 10;


    è corretta?

  2. #2

    Re: dubbio query

    Originariamente inviato da mica81
    non so se ho postato nel posto giusto... ad ogni modo, dato il seguente database:

    pazienti(cod_fiscale, nome, cognome, indirizzo, citta, datanascita,esenzione)
    visite(cod_dott, cod_paz, data, ambulatorio, importo_ticket)
    dottori(cod_fiscale, cognome, nome, cod_specializzazione, disponibile)
    ID_specializ(cod_spec, nome_ufficiale, descrizone)

    devo trovare nome e cognome dei dottori che hanno visitato nel 2008 almeno 10 persone nate a Pisa.

    secondo me la soluzione è questa:

    SELECT DISTINCT D.nome, D.cognome
    FROM dottori D INNER JOIN visite V ON D.cod_fiscale = V.cod_dott
    INNER JOIN pazienti P ON P.cod_fiscale = V.cod_paz
    WHERE V.data BETWEEN #1/1/2008# AND #31/12/2008# AND P.citta LIKE "Pisa"
    GROUP BY D.nome, D.cognome
    HAVING COUNT (*) > = 10;


    è corretta?
    direi di no.

    le date in quel modo non possono essere ordinate secondo la data ma solo secondo il codice ascii. Poi al posto di # devi usare l'apice. Il distinct con il group by e' solo un doppione, togli il distinct

    Nota: Forse l'ordinamento per Cognome, Nome potrebbe esserti utile.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di mica81
    Registrato dal
    Nov 2003
    Messaggi
    87
    @piero.mac

    hum... quindi verrebbe:

    SELECT D.nome, D.cognome
    FROM dottori D INNER JOIN visite V ON D.cod_fiscale = V.cod_dott
    INNER JOIN pazienti P ON P.cod_fiscale = V.cod_paz
    WHERE V.data BETWEEN '1/1/2008' AND '31/12/2008' AND P.citta LIKE "Pisa"
    ORDER BY D.cognome, D.nome
    HAVING COUNT (*) > = 10;

    giusto?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Credo che ci sia un equivoco sul database su cui sta facendo le prove. Visti i cancelletti immagino stia testando su access.
    Se è così mese e anno vanno invertiti

    BETWEEN #01/01/2008# AND #12/31/2008#

    oppure year(v.data) = 2008

  5. #5
    Utente di HTML.it L'avatar di mica81
    Registrato dal
    Nov 2003
    Messaggi
    87
    VVoVe:

    hem... in realtà sono su postgres

    ad ogni modo a parte le date, il resto della query è corretta?

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.