Interessante sostituto del join

lunedì 20 ottobre 2008 - 17.05

gommosina Profilo | Junior Member

Ciao,stavo sfogliando i tread vecchi e mi è venuto all'occhio un importante sostituto
al join di cui parlava Ibenaglia, che prevedeva di mettere le tabelle interessate nel from e le colonne
interessate nella clausola where.
mi piacerebbe sapere come si fa se nel where voglio confrontare se il valore di una colonna della tabella
corriponde a quello riportato in una casella di testo vb!
grazie

lbenaglia Profilo | Guru

>Ciao,stavo sfogliando i tread vecchi e mi è venuto all'occhio
>un importante sostituto
>al join di cui parlava Ibenaglia, che prevedeva di mettere le
>tabelle interessate nel from e le colonne
>interessate nella clausola where.
Mi sembra poco probabile aver suggerito una tecnica DEPRECATA anche perché personalmente ho sempre utilizzato le JOIN appunto per separare nettamente la clausola di JOIN da quella di WHERE

>mi piacerebbe sapere come si fa se nel where voglio confrontare
>se il valore di una colonna della tabella
> corriponde a quello riportato in una casella di testo vb!
Caselle di testo VB <> comandi SQL
Utilizza una query parametrica (stored procedure o altro) e lato VB richiamala via sqlCommand, valorizzando opportunamente la collection Parameters.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alexmed Profilo | Guru

Ciao
Ne approfitto per chiarirmi un dubbio.

Se al posto di utilizzare i parametri utilizzo questa formula:

qryString = "SELECT FROM nome_tabella WHERE nome_colonna = " & Me.TextBox1.Text & ""

è la stessa medesima precisa cosa o no?

Ciao

gommosina Profilo | Junior Member

sai che non saprei..penso dovrebbe andare..
ma sai cone si fa unn inner join fra più tabelle

precisamente devo giungere queste
CREATE TABLE PRODUTTORI(
ID_PRODUTTORE VARCHAR(15) PRIMARY KEY,
DENOMINAZIONE VARCHAR(20)
)

CREATE TABLE M_CATEGORIE(
ID_M_CATEGORIA VARCHAR(15)PRIMARY KEY,
DENOMINAZIONE VARCHAR(20)
)

CREATE TABLE CATEGORIE(
ID_CATEGORIA VARCHAR(15)PRIMARY KEY,
ID_M_CATEGORIA VARCHAR(15),
FOREIGN KEY(ID_M_CATEGORIA) REFERENCES M_CATEGORIE(ID_M_CATEGORIA),
DENOMINAZIONE VARCHAR(20)
)

CREATE TABLE PRODOTTI(
ID_PRODOTTO INT PRIMARY KEY,
DESCRIZIONE VARCHAR(20) ,
PREZZO DECIMAL(6,2) ,
T_FORNITURA INT,
SCORTA_SICUREZZA DECIMAL(6,2),
DISPONIBILITA INT ,
LIVELLO_RIORDINO INT ,
ID_PRODUTTORE VARCHAR(15),
ID_CATEGORIA VARCHAR(15),
FOREIGN KEY (ID_PRODUTTORE) REFERENCES PRODUTTORI(ID_PRODUTTORE),
FOREIGN KEY (ID_CATEGORIA) REFERENCES CATEGORIE(ID_CATEGORIA)
)

lbenaglia Profilo | Guru

>Se al posto di utilizzare i parametri utilizzo questa formula:
>
>qryString = "SELECT FROM nome_tabella WHERE nome_colonna = "
>& Me.TextBox1.Text & ""
>
>è la stessa medesima precisa cosa o no?
No, dato che oltre a generare un nuovo execution plan ad ogni esecuzione, apri la strada a possibili attacchi di SQL Injection.
Per capire di cosa si tratta ti rimando a questo articolo di Ale Alpi e David De Giacomi:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

lbenaglia Profilo | Guru

>sai che non saprei..penso dovrebbe andare..
>ma sai cone si fa unn inner join fra più tabelle

SELECT... FROM T1 JOIN T2 ON T1.Col = T2.Col JOIN T3 ON T2.Col = T3.Col ...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5