Visualizzazione dei risultati da 1 a 8 su 8

Discussione: settare a 'NULL'

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    15

    settare a 'NULL'

    ciao raga..mi sto esercitando x 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 nn ha familiari a carico"

    sono riuscita a fare la queri, ma come faccio x "affiancare il NULL" a ki nn ha familiari?
    la query ke ho fatto è corretta ed è questa:

    codice:
    select i.cf, i.cognome, count(f.sesso)
    from impiegato i join familiare_a_carico f on i.cf=d.cf_impiegato
    where f.sesso='M'
    group by i.cf,i.cognome

  2. #2
    usa left join

    codice:
    from impiegato i 
    left join familiare_a_carico f on i.cf=d.cf_impiegato
    ...
    se non ci sono familiari ti rendera' NULL
    ovviamente quello che rende e' un valore bool e non una stringa.

    ps. non usare la k o le x nei forum ... non stai mandando un sms, scrivi in italiano.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    15
    scusa per le 'k' e le 'x'..forza dell'abitudine..
    ho provato il tuo suggerimento ma mi dà lo stesso risultato di prima..nessun NULL..
    che faccio??

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    15
    volevo dire..se tolgo il where, mi dà uno '0' dove il sesso è diverso da M,
    ma se lascio il where, il risultato è lo stesso della mia prima query..che posso fare??

  5. #5
    Originariamente inviato da ritita
    volevo dire..se tolgo il where, mi dà uno '0' dove il sesso è diverso da M,
    ma se lascio il where, il risultato è lo stesso della mia prima query..che posso fare??
    Con left join leggi tutti i record della tabella i che si trova in from e tutti i record che hanno la corrispondenza i.cf=d.cf_impiegato. se manca la corrispondenza ricevi NULL.

    Ma ... azzz.... vedo ora metti familiare_a_carico ALIAS f e poi cerchi i.cf=d.cf_impiegato

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    15
    non sono così tonta..ho sbagliato nel ricopiare il codice..lo so che

    codice:
    from impiegato i left join familiare_a_carico f on i.cf=f.cf_impiegato
    però non mi vienne comunque il risultato che desideravo.
    dovrebbe venirmi una tabella unica con i sia i numeri dei familiari a carico maschi che il valore NULL o 0 dove non ci sono familiari a carico... ma quest'ultimo non mi esce..
    altri consigli??

  7. #7
    Originariamente inviato da ritita
    non sono così tonta..ho sbagliato nel ricopiare il codice..lo so che

    codice:
    from impiegato i left join familiare_a_carico f on i.cf=f.cf_impiegato
    però non mi vienne comunque il risultato che desideravo.
    dovrebbe venirmi una tabella unica con i sia i numeri dei familiari a carico maschi che il valore NULL o 0 dove non ci sono familiari a carico... ma quest'ultimo non mi esce..
    altri consigli??
    certo che no che non viene. Ti ho precisato che rende un BOOL e non una stringa. Count() non conta i NULL.

    Potresti usare una if.

    select i.cf, i.cognome, if(f.sesso IS NULL, 0, count(f.sesso))

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    15
    scusa..non avevo capito..però non funziona proprio così..mi dà errore alla riga di quell'if..

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