|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2003
Città: Zena
Messaggi: 1883
|
sql riga valori nulli
Ola a todos,
faccio una select in sql e pare che tutto funziona bene, l'unico problema è che restituisce sempre, in qualsiasi caso una riga con null (anche il campo id) sia che abbia trovato dei record che no, in fondo ci mette sempre sta cazz di riga, cosa può essere? il fatto è che è in una stored procedure: vi posto il codice: Codice:
CREATE PROCEDURE SPreportVerbaliDaAs ( @P_DT_END datetime, @P_DT_START datetime, @FA_CODICE varchar(4), @imp_amministratore int, @imp_manutentore int ) AS declare @CodiceSql varchar (2000) set @CodiceSql = 'select a.ver_id, ver_data, ver_scadenza, ver_stato,ver_datasped, ver_protocollo, ver_note from commessa d left join impianto e on d.co_id=e.co_id ' if @imp_amministratore > '' begin set @CodiceSql = @CodiceSql + 'AND E.IMP_AMMINISTRATORE=''' + cast(@imp_amministratore as varchar) + ''' ' end if @imp_manutentore > '' begin set @CodiceSql = @CodiceSql + 'AND E.IMP_MANUTENTORE=''' + cast(@imp_manutentore as varchar) + ''' ' end set @CodiceSql = @CodiceSql + 'left join verbale a on a.imp_id=e.imp_id left join intervento b on a.ver_id=b.ver_id and b.int_dataprev=(select min(int_dataprev) from intervento c where c.ver_id=b.ver_id) where d.fa_codice=''' + @FA_CODICE + ''' and ag_id is null ' if isdate(@P_DT_END) = 1 begin set @CodiceSql = @CodiceSql + ' and b.int_dataeffet >= ''' + CAST(@P_DT_END AS VARCHAR) + ''' ' end if isdate(@P_DT_START) = 1 begin set @CodiceSql = @CodiceSql + ' and b.int_dataeffet <= ''' + CAST(@P_DT_START AS VARCHAR) + ''' ' end exec (@CodiceSql) commessa impianto verbale intervento come avrete notato la select va filtrata... in commessa il fa_codice in impianto il manutentore e l'amministratore in verbale ag_id deve essere nullo le date vanno verificate su un campo int_dataprev, dala tabella intervento, prendendo però l'intervento più vecchio
__________________
Internet gratis in mobilità? perchè no? http://www.fon.com/ |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
fammi capire meglio... nei dati della tabella tu non hai campi blank o null, giusto? la riga di vampi vuoti esce per caso sempre in coda ai dati? che editor usi per fare la query?
perchè se nei dati hai dei blank (degli spazi banalmente) dovresti provare a mettere ove possibile una condizione where trim(nomecampo) is not null, in questo modo selezioni solo i campi valorizzati inoltre alcuni editor sql visualizzano come ultima riga una riga nulla (cmq dovrebbe portare anche il numero di righe selezionate), oppure in casi di nessuna riga selezionata riportano l'intestazione delle colonne con una riga vuota, ma di solito da qualche parte nella finestra dice qualcosa tipo "no rows returned"...
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2003
Città: Zena
Messaggi: 1883
|
Quote:
la riga di nulli me la restituisce in 2 query (su 5 che devo fare) non ho campi blank, ma il fatto è che mi da una riga di null con l'id null... comunque la mete sempre in coda, penso che il problema sia solo nella select...
__________________
Internet gratis in mobilità? perchè no? http://www.fon.com/ |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
se l'id dovesse sempre essere valorizzato, prova a fare il trucco dell'esclusione con la trim sul campo id...
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2003
Città: Zena
Messaggi: 1883
|
Quote:
__________________
Internet gratis in mobilità? perchè no? http://www.fon.com/ |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
ad occhio non mi sembra, però tutto può essere...
semmai prova a mettere una chiave primaria sulle tabelle per le righe duplicate, e a mettere not null alcuni campi, se non ti accetta le abilitazioni il problema potrebbero essere alcuni dati incoerenti...
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2003
Città: Zena
Messaggi: 1883
|
Quote:
ma per spiegarmi il perchè ci vuole un esperto di sql... ad un certo punto c'è una condizione: ag_id is null se invece di is ci metto = mi trova meno valori ma non mi restituisce la riga nulla..... perchè?????? devo ancora verificare cosa fa di preciso... corro!
__________________
Internet gratis in mobilità? perchè no? http://www.fon.com/ |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2003
Città: Zena
Messaggi: 1883
|
ho trovato la soluzione!
![]() quasi mi vergogno a scriverla... era una banalità.... facevo la join con la tabella verbale (che era quella che dovevo visualizzare) con una left..... bisognava usare right altrimenti prendeva anche gli impianti senza verbali..... e quindi metteva dei verbali con campi nulli... anche se funziona ancora adesso devo spiegarmi la differenza tra is e =.... mah!
__________________
Internet gratis in mobilità? perchè no? http://www.fon.com/ |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
ti ho risposto nell'altro post!
![]() purtroppo non sempre riesco a focalizzare il problema sulle join non conoscendo esattamente le tabelle... chettedevodì, sarò un po' niubbo... ![]()
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2003
Città: Zena
Messaggi: 1883
|
Quote:
__________________
Internet gratis in mobilità? perchè no? http://www.fon.com/ |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:03.