Query SQL
spero esista qualche esperto di databases in giro
sono, principiantissimo, abbiate pietà
ho due databases fatti così
database SpecObj: facciamo finta abbia una colonna che ci interessa, SpecObjID
database SpecLine: facciamo finta abbia tre colonne che ci interessano, SpecObjID, lineID, nSigma
questa parte dovrebbe significare prendi la riga di SpecLine ove lineID è 4
se il suo SpecObjID coincide con uno SpecObjID di SpecObj
stampami SpecObj e nSigma della linea 4
bene, ora, se non mi viene trovata nessuna linea con lineID = 4, nell'output non ottengo nessuna riga relativa agli oggetti di SpecObj che rispondono alle (selezioni varie su S)
come posso fare invece per avere tutti gli oggetti del primo database che hanno la proprietà (selezioni varie su S), e poi avere una colonna di nSigma corrispondenti qualora esista la linea 4 nel database L1 con un Id uguale a quello di S? e invece avere magari valore 0 se questa non esiste?
spero di essermi spiegato in maniera comprensibile

sono, principiantissimo, abbiate pietà

ho due databases fatti così
database SpecObj: facciamo finta abbia una colonna che ci interessa, SpecObjID
database SpecLine: facciamo finta abbia tre colonne che ci interessano, SpecObjID, lineID, nSigma
SELECT TOP 100000 S.SpecObjID L1.nSigma FROM SpecObj as S JOIN SpecLine as L1 ON S.SpecObjID = L1.SpecObjID WHERE (selezioni varie su S) L1.lineID = 4
questa parte dovrebbe significare prendi la riga di SpecLine ove lineID è 4
se il suo SpecObjID coincide con uno SpecObjID di SpecObj
stampami SpecObj e nSigma della linea 4
bene, ora, se non mi viene trovata nessuna linea con lineID = 4, nell'output non ottengo nessuna riga relativa agli oggetti di SpecObj che rispondono alle (selezioni varie su S)
come posso fare invece per avere tutti gli oggetti del primo database che hanno la proprietà (selezioni varie su S), e poi avere una colonna di nSigma corrispondenti qualora esista la linea 4 nel database L1 con un Id uguale a quello di S? e invece avere magari valore 0 se questa non esiste?
spero di essermi spiegato in maniera comprensibile

Risposte
Prova a verificare che effettivamente nelle due tabelle ci siano i dati corrispondenti, cioè che nella tabella SpecObj esista un record con SpecObjID=4 e che esista nella tabella SpecLine.
Comunque la sintassi della query mi sembra corretta, ma che tipo di database stai utilizzando? (Oracle, Access, SqlSever,..)
Comunque la sintassi della query mi sembra corretta, ma che tipo di database stai utilizzando? (Oracle, Access, SqlSever,..)
"wedge":
come posso fare invece per avere tutti gli oggetti del primo database che hanno la proprietà (selezioni varie su S), e poi avere una colonna di nSigma corrispondenti qualora esista la linea 4 nel database L1 con un Id uguale a quello di S? e invece avere magari valore 0 se questa non esiste?
spero di essermi spiegato in maniera comprensibile
Insomma...

Vediamo se ho capito: se "lineID=4" ti interessa il valore del campo "nSigma"; se invece "lineID != 4" non ti interessa (o non vuoi) tale valore, e quindi metti zero. Puoi semplicemente allora fare una intersezione di due select successive.
al posto di JOIN scrivi LEFT OUTER JOIN