|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 7
|
SQL : settare a NULL
ciao raga..mi sto esercitando per l'esame di basi e..ho un problema con una query..
"mostrare per ogni impiegato,il suo cf,il cognome e il numero di familiari a carico maschi che ha,se ha familiari a carico, oppure il suo cf e il cognome affiancato da NULL se non ha familiari a carico" sono riuscita a fare la query, ma come faccio per "affiancare il NULL" a chi non ha familiari? la query che ho fatto è corretta ed è questa: Codice:
select i.cf, i.cognome, count(f.sesso) from impiegato i left join familiare_a_carico f on i.cf=f.cf_impiegato where f.sesso='M' group by i.cf,i.cognome Ultima modifica di mitika : 14-06-2011 alle 19:17. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jan 2008
Messaggi: 257
|
Puoi usare un CASE
Codice:
select i.cf, i.cognome, CASE count(f.sesso) WHEN 0 THEN NULL ELSE count(f.sesso) END AS a_carico from impiegato i left join familiare_a_carico f on i.cf=f.cf_impiegato where f.sesso='M' group by i.cf,i.cognome CF - COGNOME - NULL (se ho capito bene quello che chiedevi) |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 7
|
Cor3 hai capito ciò che intendevo..
ma il risultato è lo stesso..solo i valori dei maschi a carico senza il resto.. secondo me,il problema è nel where..perchè lì impongo che f.sesso='M' e quindi continua a contare solo i maschi..che suggerisci?? |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jan 2008
Messaggi: 257
|
Perchè non posti la strutture delle tabelle cosi è tutto più semplice?
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
Codice:
select i.cf, i.cognome, count(f.sesso) from impiegato i left join familiare_a_carico f on i.cf=f.cf_impiegato AND f.sesso='M' group by i.cf,i.cognome
__________________
Khelidan |
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 7
|
GRAZIE khelidan1980..era molto più semplice di quanto io avessi pensato..
Ultima modifica di mitika : 14-06-2011 alle 20:06. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Ni..L'importante è che hai capito il perché, non è proprio immediato se non si mastica sql
__________________
Khelidan |
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 7
|
no no..seriamente,ho capito..però ho anche un altro problema..
altra query..in realtà non riesco proprio a capire che condizione devo impostare.. "mostrare il cf, nome e cognome di tutti gli impiegati che non hanno alcuna collega donna che lavora nel loro stesso dipartimento" ho iniziato a fare questa parte di query, ma la condizione delle colleghe donne,non ho proprio idea di come farla Codice:
select cf, nome,cognome from impiegato i join dipartimento d on i.numero_dipartimento=d.numero_dipartimento non voglio il codice..voglio capire.. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
sei sulla strada giusta, così associ gli impiegati al proprio dipartimento, ora devi filtrare queste righe in base alla condizione che ti è stata data
__________________
Khelidan Ultima modifica di khelidan1980 : 14-06-2011 alle 21:56. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Potresti sottrarre a quelli impiegati, gli impiegati che hanno colleghe donne. Ti aiuterebbe questo?
|
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 7
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
mi associo alla richiesta di capire meglio come sono strutturate le tabelle
bisogna sapere come è indicata la collega femmina ci sarà un campo M/F o qualcosa del genere
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
|
|
|
|
#13 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 7
|
ecco le 2 tabelle
Codice:
CREATE TABLE IMPIEGATO(
CF CHAR(16) PRIMARY KEY,
NOME VARCHAR2(20) NOT NULL,
COGNOME VARCHAR2(20) NOT NULL,
SESSO VARCHAR2(1),
CF_SUPERVISORE CHAR(16),
NUMERO_DIPARTIMENTO NUMBER(2,0) NOT NULL,
CONSTRAINT CHECK_SESSO CHECK(SESSO IN ('M','F'))
)
Codice:
CREATE TABLE SEDE_DIPARTIMENTO( NUMERO_DIPARTIMENTO NUMBER(2,0), CITTA_SEDE VARCHAR2(20), CONSTRAINT PK_SEDE PRIMARY KEY (NUMERO_DIPARTIMENTO,CITTA_SEDE)) |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
non mi pare serva nessuna join tra le 2
quello che farei è tirare fuori i distinct numeri di dipartimento where sesso = 'F' e poi tirare fuori gli altri dati dove il numero del dipartimento NOT IN la query precedente
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
in effetti non serve nemmeno la join, hai tutto nella prima tabella ti basta fare una subquery nella where ragionaci
__________________
Khelidan |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:33.




















