Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Join al posto di exec
venerdì 07 dicembre 2012 - 15.17
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 2.0
|
.NET 3.0
|
Windows XP
|
Visual Studio 2008
|
Visual Studio 2005
|
SQL Server 2008 R2
|
SQL Server 2008
|
SQL Server 2005
|
MySQL 4.1
|
Office 2007
|
Internet Explorer 6.0
|
Chrome
|
Opera
|
Firefox
|
Javascript
|
VBScript
|
Crystal Reports 10.0
|
SQL Reporting Services
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
ven 7 dic 2012 - 15:17
Salve a tutti, mi trovo nella situazione di scrivere una join "dinamica" non eseguendo exec di stringhe se possibile.
Da una tabella di partenza di questo tipo:
T_CONDIZIONI
ID_CONDIZIONE;CODICE;VALORE
941;350;01
941;363;303
In sostanza questa, risulterebbe la condizione da eseguire (prendetela per buona senza che vi dica il perchè mi usciva così prima :D):
([350] = '01') AND ([363] = '303')
Ora, dovendomi agganciare a questa tabella che contiene solo i dati presenti:
T_DATI
ID_CONDIZIONE;CODICE;VALORE; IMPORTO
941;350;01;100
941;350;01;200
941;350;01;300
Scrivendo:
SELECT
*
FROM T_DATI AS DATI
INNER JOIN T_CONDIZIONI AS DIZ_C ON
DIZ_C.ID_CONDIZIONE = DATI.FK_ID_CONDIZIONE
AND DIZ_C.CODICE_CAMPO = DATI.COD_CAMPO
AND DIZ_C.VALORE = DATI.VALORE
I valori presenti nella tabella T_DATI vengono presi:
941;350;01;100
941;350;01;200
941;350;01;300
Mentre in realtà non dovrebbero. Non so se mi sono spiegato, spero tanto di si, come posso risolvere? Grazie
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
sab 8 dic 2012 - 11:24
>T_CONDIZIONI
>ID_CONDIZIONE;CODICE;VALORE
>941;350;01
>941;363;303
>
>Ora, dovendomi agganciare a questa tabella che contiene solo
>i dati presenti:
>T_DATI
>ID_CONDIZIONE;CODICE;VALORE; IMPORTO
>941;350;01;100
>941;350;01;200
>941;350;01;300
>
>Scrivendo:
>SELECT
> *
>FROM T_DATI AS DATI
> INNER JOIN T_CONDIZIONI AS DIZ_C ON
> DIZ_C.ID_CONDIZIONE = DATI.FK_ID_CONDIZIONE
> AND DIZ_C.CODICE_CAMPO = DATI.COD_CAMPO
> AND DIZ_C.VALORE = DATI.VALORE
>
>I valori presenti nella tabella T_DATI vengono presi:
>941;350;01;100
>941;350;01;200
>941;350;01;300
>
>Mentre in realtà non dovrebbero.
Ciao,
perchè non dovrebbero?
La prima riga di T_CONDIZIONI (941;350;01) lega perfettamente con le 3 righe di esempio della T_DATI
e quindi la INNER JOIN le lega tutte e 3.
Quale è il risultato che volevi ottenere?
Michele
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
sab 8 dic 2012 - 16:47
La condizione dovrebbe essere formata da entrambi i record:
941;350;01
941;363;303
Ovviamente come dici te, la prima lega, la seconda no, e il risultato dovrebbe escludere i record. Come scrivevo sopra la condizione dovrebbe risultre come questa:
([350] = '01') AND ([363] = '303')
E quindi escludere la selezione, invece, come hai ben notato, la prima lega e tira fuori i record.
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
sab 8 dic 2012 - 17:53
La JOIN ha fatto il suo lavoro correttamente...
e quindi serve procedere in modo diverso..
Non è però molto chiaro che risultato vorresti ottenere
Michele
HolidaySoft.it
Profilo
| Junior Member
100
messaggi | Data Invio:
lun 10 dic 2012 - 18:03
Ma quando dici
([350] = '01') AND ([363] = '303')
cosa intendi?? è sql? è plsql? è tsql? è vba? credimi non lo riconosco in nessun linguaggio...
Se ti spieghi meglio possiamo darti una mano
ciao
Mik
A quick solution is a shortcut to troubleshooting
http://www.HolidaySoft.it
http://www.GarganoSapori.it
http://www.osteriaoristorante.it
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
mar 11 dic 2012 - 08:47
Oddio scusatemi, ma credevo si capisse ... Quando scrivo:
([350] = '01') AND ([363] = '303')
Intendo la where:
Select * from ....
where
([350] = '01')
AND ([363] = '303')
Dove 350 e 363 sono campi della tabella.
Ma comunque non credo si possa ottenere quello che mi serve, sto cercando di risolvere diversamente, ma se capite cosa intendo e potete postare una soluzione, ve ne sarei davvero grato.
Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !