Newsgroup: it.comp.lang.visual-basic
Titolo: Help: WHERE

Andando avanti nello studio di VB 2005 Express (Mondadori) sto guardando 
la parte relativa ai data base e compagnia cantante (SQL, ADO, ecc.) 
Aggiungendo una query nell'esempio CarTracker, questa non funziona bene:
SELECT Listing.ListingID, (cut)
FROM Listing INNER JOIN (cut)
WHERE     (CarType.CarTypeName LIKE '%' + @cartypename + '%')
Penso sia il WHERE e più precisamente, se guardo il listato, la parte 
'%': in pratica il filtro non funziona, trova sempre 0 record. Prima e 
dopo il segno <<percentuale>> ho due caratteri <<'>> che non sono quelli 
del listato, cioè <<‘>> e <<’>>. Se però metto questi, il programma si 
blocca.

 blocca.
E se ci mettessi l'asterisco?...
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 FROM Listing INNER JOIN (cut)
che non e' sufficiente..
una join deve anche definire le impostazioni di join tra le entita' 
coinvolte, quindi qualche cosa simile a
 FROM dbo.Listing AS L
  INNER JOIN dbo.cut AS C
   ON C.colonna = L.colonna
diversamente il parser ti sollevera', in questo caso l'eccezione
---
Msg 102, Level 15, State 1, Line xx
Incorrect syntax near 'C'.
oppure
---
Msg 156, Level 15, State 1, Line zz
Incorrect syntax near the keyword 'WHERE'.
se anche il filtro di where fosse presente, visto che la sintassi non e' 
completa..
come piccolo appunto personale consiglio di specificare sempre lo schema di 
appartenenza degli oggetti utilizzati, e mi rende parecchio perplesso il 
fatto che molti libri in effetti non indichino mai tale "specifica" di 
correttezza e risoluzione preventiva di problemi :)
al di la' di cio', esemplificando il tutto, e ritenendo che (cut) 
corrisponda in effetti ad una colonna presente sia in dbo.Listing che in 
dbo.CarType essendo quindi la colonna referenziante della join tra le 2 
tabelle, potremmo scrivere:
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.Listing (
 ListingID int NOT NULL,
 cutX int
 )
CREATE TABLE dbo.CarType (
 cutX int,
 CarTypeName varchar(10)
 );
GO
INSERT INTO dbo.Listing VALUES ( 1, 1 );
INSERT INTO dbo.Listing VALUES ( 2, 2 );
INSERT INTO dbo.Listing VALUES ( 3, 2 );
INSERT INTO dbo.Listing VALUES ( 4, 3 );
INSERT INTO dbo.Listing VALUES ( 5, 3 );
INSERT INTO dbo.Listing VALUES ( 6, 3 );
INSERT INTO dbo.CarType VALUES ( 1, 'spider' );
INSERT INTO dbo.CarType VALUES ( 2, 'van' );
INSERT INTO dbo.CarType VALUES ( 3, 'sport' );
INSERT INTO dbo.CarType VALUES ( 4, 'berlina' );
DECLARE @cartypename varchar(10);
SET @cartypename = 'sport';
SELECT L.ListingID
  -- (cut) /* questo non puo' essere giusto! */
 -- FROM Listing INNER JOIN (cut) /* anche questo non puo' essere giusto! */
   /* manca poi la definizione della join tra le 2 tabelle */
 , L.cutX
 , C.cutX -- ridondante con quello sopra
 , C.CarTypeName
 FROM dbo.Listing L
  INNER JOIN dbo.CarType C
   ON C.cutX = L.cutX
 WHERE (C.CarTypeName LIKE '%' + @cartypename + '%')
GO
DROP TABLE dbo.CarType, dbo.Listing;
--<------
ListingID   cutX        cutX        CarTypeName
----------- ----------- ----------- -----------
4           3           3           sport
5           3           3           sport
6           3           3           sport
saluti
-- 
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz
 
http://italy.mvps.org
DbaMgr2k ver 0.21.0 - DbaMgr ver 0.65.0 and further SQL Tools
--------- remove DMO to reply 

 tabella messa in join con dbo.Listing
Ciao Andrea,
mi sa che hai interpretato male quello che ha scritto Barry Lindon,
secodo me con (cut) intendeva specificare che la query continua ma non 
l'ha volutamente riportato.
Ma magari però mi sbaglio io.
ciao
stefano

 Ma magari perņ mi sbaglio io.
puo' darsi :), ma cio' non toglie che il filtro funzioni.. non ha neanche 
riportato il testo dell'eccezione che gli viene sollevata.. anche quello 
aiuta..
stiamo a vedere cosa eventualmente aggiunge.. :)


 stiamo a vedere cosa eventualmente aggiunge.. :)
Sì, il cut era per semplificare, non volevo v faceste male. Eccolo completo:
SELECT     Listing.ListingID, Listing.ColorID, Listing.MakeID, 
Listing.CarTypeID, Listing.DateSeen, Listing.Year, Listing.Price, 
Listing.Cylinder, Listing.HP,
                       Listing.URL, Listing.EPGCity, Listing.EPGHighway, 
Listing.Notes
FROM         Listing INNER JOIN
                       CarType ON Listing.CarTypeID = CarType.CarTypeID
