PDA

View Full Version : [SQL] Correttezza su alcune query


Fabietto206
16-03-2009, 14:47
Ho le seguenti tabelle:
Dati anagrafici (Codice Fiscale, Nome, Cognome, Data di nascita, Tipo Paziente, Classe)
Recapiti (Codice fiscale, Indirizzo, Città, Tel fisso, Tel mobile, E-mail)
*Codice fiscale si riferisce a Dati anagrafici(Codice Fiscale)
Caratteristiche (Codice fiscale, Sesso, Peso, Altezza, Gruppo Sanguigno)
*Codice fiscale si riferisce a Dati anagrafici(Codice Fiscale)
Medico Curante (Codice fiscale, Nome, Cognome, Telefono)
In cura (Paziente ,Medico Curante)
*Paziente si riferisce a Dati anagrafici(Codice Fiscale), Medico curante si riferisce a Medico curante(Codice Fiscale)
Medico ambulatorio (Codice fiscale, Nome, Cognome, Tel. Fisso, Tel. Mobile)
Referto (Codice, Paziente, Medico, Data, Ora, Uscita Anticipata, Pronto Soccorso)
*Paziente si riferisce a Dati anagrafici(Codice Fiscale), Medico si riferisce a Medico ambulatorio(Codice Fiscale)
Patologia (Codice, Nome, Allergia)
Diagnosi (Patologia,Referto)
*Patologia si riferisce a Patologia(codice), Referto si riferisce a Referto(codice)
Malattia cronica (Paziente, Patologia)
*Paziente si riferisce a Dati anagrafici(Codice Fiscale), Patologia si riferisce a Patologia (codice)
Sintomo (Codice, Nome)
Riscontro (Referto, Sintomo)
*Referto si riferisce a Referto(codice), Sintomo si riferisce a Sintomo(codice)
Medicinale (Codice, Nome, Casa farmaceutica, Categoria, Costo per campione)
Somministrazione (Referto, Medicinale, Dosaggio)
*Referto si riferisce a Referto(codice), Medicinale si riferisce a Medicinale(codice)
Partita (Medicinale, Scadenza, Data consegna, Quantità ordinata, Quantità disponibile, Costo ordine)
* Medicinale si riferisce a Medicinale(codice)


Su cui dovrei eseguire le seguenti query:
10) Visualizzazione informazioni fisiche e sanitarie, malattie croniche e allergie di un paziente
13) Visualizzazione dati del medico curante di un paziente
Ecco vorrei sapere se sono giuste:

10) SELECT c.codice fiscale, c.sesso, c.peso, c.altezza, c.gruppo sanguigno, p.codice, p.nome, p.allergia, m.patologia,
FROM caratteristiche c, dati anagrafici d, patologia p, malattia cronica m
WHERE c.codice fiscale = d.codice fiscale and p.codice = m.patologia and m.paziente = d.codice fiscale

13) SELECT m.codice fiscale, m.nome, m.cognome, m.telefono
FROM medico curante m, dati anagrafici d, in cura i
WHERE i.paziente = d.codice fiscale and i.medico curante = m.codice fiscale

Grazie

Fabietto206
17-03-2009, 10:10
Nessuno sa dirmi se sono corrette??

MarcoGG
17-03-2009, 13:05
La 12) e la 16) sono sicuramente corrette ( a parte che forse sarebbe meglio per il not equal "<>" anzichè "!=" ). Se hai dubbi sulla sintassi SQL,
le W3Schools sono praticamente un riferimento, ad esempio qui :

http://www.w3schools.com/Sql/sql_where.asp

Altra cosa, mettere degli spazi nei nomi di Tabelle, Campi, ecc... ( es.: WHERE quantità ordinata != 0 ) è una pratica che ti sconsiglio caldamente.

Le relazioni non sono proprio di facile lettura, facevi prima a postare uno screenshot del diagramma DB...

gugoXX
17-03-2009, 13:06
Nessuno sa dirmi se sono corrette??
L'ultima non mi pare corretta.

Non terrebbe conto del fatto che alcuni medicinali, seppure esauriti, sono gia' stati ordinati, e penso che non li si voglia avere in output.

La dicitura corretta della domanda secondo me sarebbe voluta essere:
19) Visualizza medicinali che si vuole ordinare (quindi non gia' ordinati) perché esauriti.

Fabietto206
17-03-2009, 13:22
La 12) e la 16) sono sicuramente corrette ( a parte che forse sarebbe meglio per il not equal "<>" anzichè "!=" ). Se hai dubbi sulla sintassi SQL,
le W3Schools sono praticamente un riferimento, ad esempio qui :

http://www.w3schools.com/Sql/sql_where.asp

Altra cosa, mettere degli spazi nei nomi di Tabelle, Campi, ecc... ( es.: WHERE quantità ordinata != 0 ) è una pratica che ti sconsiglio caldamente.

Le relazioni non sono proprio di facile lettura, facevi prima a postare uno screenshot del diagramma DB...

Dici di nn lasciare gli spazi? dici ke da errore in mysql?

MarcoGG
17-03-2009, 14:17
Dici di nn lasciare gli spazi? dici ke da errore in mysql?

Personalmente la considero una piccola "regola d'oro" generale, alla quale mi attengo sempre, indipendentemente dalla base dati, che sia MySql, Sql Server, Access, Oracle...
Non sto a chiedermi quale base dati li possa tollerare o meno, e in quali situazioni.
Nomi di tabelle, campi, viste ecc ... Uno spazio causa anzitutto confusione, compromette la leggibilità, e porta spesso a errori e ulteriori difficoltà in debug, quando non è chiaro cosa vada storto interrogando o apportando modifiche da codice ( VB, C#, java ecc... ).

gugoXX
17-03-2009, 14:54
Personalmente la considero una piccola "regola d'oro" generale, alla quale mi attengo sempre, indipendentemente dalla base dati, che sia MySql, Sql Server, Access, Oracle...
Non sto a chiedermi quale base dati li possa tollerare o meno, e in quali situazioni.
Nomi di tabelle, campi, viste ecc ... Uno spazio causa anzitutto confusione, compromette la leggibilità, e porta spesso a errori e ulteriori difficoltà in debug, quando non è chiaro cosa vada storto interrogando o apportando modifiche da codice ( VB, C#, java ecc... ).

Quoto

Fabietto206
17-03-2009, 19:10
Personalmente la considero una piccola "regola d'oro" generale, alla quale mi attengo sempre, indipendentemente dalla base dati, che sia MySql, Sql Server, Access, Oracle...
Non sto a chiedermi quale base dati li possa tollerare o meno, e in quali situazioni.
Nomi di tabelle, campi, viste ecc ... Uno spazio causa anzitutto confusione, compromette la leggibilità, e porta spesso a errori e ulteriori difficoltà in debug, quando non è chiaro cosa vada storto interrogando o apportando modifiche da codice ( VB, C#, java ecc... ).

Avevi ragione te, ora ho sistemato tt....grazie x avermelo fatto notare!!

Cmq mi sapete dire se sono giuste le query da me scritte sopra?