|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Inserire una condizione nella Stringa SQL
Ho una tabella dove voglio estrarre dei dati in base ad una condizione,
se la condizione e' True deve estrarre in base ad un parametro, se la condizione e' False deve estrarre in base ad un altro parametro, quindi: ---------------------------------------------------------------------------------- SELECT * FROM Tabella WHERE IF(1=1, ID_Tabella='1', ID_Tabella='2') ---------------------------------------------------------------------------------- in questo caso la condizione e' True e quindi estrae in base a: ID_Tabella='1', ---------------------------------------------------------------------------------- SELECT * FROM Tabella WHERE IF(1=2, ID_Tabella='1', ID_Tabella='2') ---------------------------------------------------------------------------------- in questo caso la condizione e' False e quindi estrae in base a: ID_Tabella='2', e tutto questo funziona su "MySQL" , io devo fare questo su "SQL Server 2000", come devo fare ??? |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Al posto dell'istruzione IF in SQL Server devi usare
(CASE WHEN Espressione THEN Condizione1 ELSE Condizione2 END) Es: IIF(1=1,tblA.ID,tblB.ID) as MultiTableID Diventa: (CASE WHEN 1=1 THEN tblA.ID ELSE tblB.ID END) AS MultiTableID |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
sono a testare definitivamente il programma,
con la seguente STRINGA SQL mi estrae perfettamente tutto, solo che non mi rispetta le ultime 2 condizioni (..parametri..) ---> AND Cronologia.Vendita='4' AND Cronologia.ID_Cliente='" & _ID_Cliente_ & "' non so come fare per fare rispettare pure questi parametri...!!! sono assolutamente necessari questi 2 parametri........!!! la stringa attualmente mi estrae tutto, sensa rispettare quei 2 parametri...!!! Codice:
SELECT Cronologia.ID_Cronologia,Articoli.Articolo,Contratti.Contratto,Cronologia.Quantita,Cronologia.Data_Vendita,Cronologia.Nome_Referente,Cronologia.Cognome_Referente,Cronologia.Email_Referente,Cronologia.Tel_Referente,Cronologia.Fax_Referente,Cronologia.Note_Vendita FROM Cronologia LEFT JOIN Articoli ON Cronologia.ID_Articolo=Articoli.ID_Articolo LEFT JOIN Contratti ON Cronologia.ID_Contratto=Contratti.ID_Contratto AND Cronologia.Vendita='4' AND Cronologia.ID_Cliente='" & _ID_Cliente_ & "' |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Scusa non ho capito una cosa ...
questa SQL funziona anche in SQL server ??? ... perchè non vedo la proposizione WHERE! ... non dovrebbe essere WHERE Cronologia.Vendita='4' AND Cronologia.ID_Cliente='" & _ID_Cliente_ & "' ???? ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
Infatti!!!
hai ragione tu !!! ecco perceh non mi considera le ultime 2 condizioni ......... OK problema risolto, GRAZIE mille !!! ciao! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 1209
|
Dato che usi un join al posto del WHERE si usa l' ON
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
e se lascio WHERE cosa succede dato che funziona ????
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Quote:
SELECT * FROM tabellaA INNER JOIN tabellaB ON tabellaA.IdA = tabellaB.IdB ... equivale a scrivere ... SELECT * FROM tabellaA WHERE tabellaA.IdA = tabellaB.IdB .... Personalmente credo che il collegamento tra due campi vada sempre espresso tramite espressione JOIN (E' più corretto come standard S.Q.L.). Invece se devi specificare particolari valori è meglio definirli nella proposizione WHERE. Anche perchè questo discorso vale solo per gli INNER JOIN (Semplici).In caso di LEFT o RIGHT JOIN multipli,le condizioni WHERE da scrivere risulterebbero abbastanza complicate! |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
ok molte grazi , spiegazione perfetta, ciao alla prossima!!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:50.