Query...aiuto, chi la sa fare?
kekko80 non è online. Ultima attività: 05/07/2008 20.32.56kekko80
Inserito il: 04 luglio 2008 12.09
12 messaggi dal 06 mag 2008 Istalla Microsoft Silverlight!
Mi serve aiuto con una query:

Io ho una tebella Files, con varie colonne: A, B, C, etc
E a seconda se la colonna contiene un valore o un altro, mi seleziona la colonna corrispondente, se per esempio la colonna contiene il valore A mi seleziona la colonna A, se invece contiene il valore B mi seleziona la colonna B.

La queri che vorrei fare è questa:

SELECT ColonnaA FROM [Files] WHERE ContenutoColonnaA= A
OR
SELECT ColonnaB FROM [Files] WHERE ContenutoColonnaB= B

come si fa? Uso dei CASE, degli IF?

Grazie

*****************************************************************************
SELECT * FROM [Files] WHERE (([idFile] = @idFile) AND ([RE_TomTom] LIKE '%' + @RE_TomTom + '%') AND ([RE_TomTom] LIKE '%' + @RE_TomTom2 + '%')


SELECT * FROM [Files] WHERE (([idFile] = @idFile) AND ([EA_TomTom] LIKE '%' + @EA_TomTom + '%') AND ([EA_TomTom] LIKE '%' + @EA_TomTom2 + '%'))
*****************************************************************************
Microsoft Most Valuable Professional
RE: Query...aiuto, chi la sa fare?
l.bianchi non è online. Ultima attività: 05/09/2008 7.52.44l.bianchi
Inserito il: 04 luglio 2008 12.36
contributi / 852 messaggi dal 19 dic 2003 Istalla Microsoft Silverlight!
kekko80 ha scritto:
SELECT ColonnaA FROM [Files] WHERE ContenutoColonnaA= A
OR
SELECT ColonnaB FROM [Files] WHERE ContenutoColonnaB= B


E se la colonnaA contiene A e la colonnaB contiene B? Che cosa fai?

Se il test dovessi farlo solo su una colonna potresti scrivere una query simile a

SELECT CASE campo WHEN 'A' THEN campo1 ELSE campo2 END
FROM dbo.Tabella
WHERE condizione

Attenzione al fatto che la condizione di ricerca non ha nulla a che vedere con la logica secondo la quale devi restituire il campo1 oppure il campo2.

Leggendo il testo del tuo post, però, sembra che il test devi farlo sempre e comunque sulla base del valore presente in un campo (in un solo campo), quindi da quanto scrivi (che è diverso dalla query che hai ipotizzato) dovrebbe essere plausibile la soluzione che ti ho proposto...

Bye

Luca Bianchi
Microsoft MVP - SQL Server
http://community.ugiss.org/blogs/lbianchi
Microsoft Most Valuable Professional
Re: Query...aiuto, chi la sa fare?
Andrea Montanari non è online. Ultima attività: 05/09/2008 19.11.14Andrea Montanari
Inserito il: 04 luglio 2008 12.41
contributi / Top Poster / Community manager / www.asql.biz / 928 messaggi dal 27 lug 2005 Istalla Microsoft Silverlight!
salve,
kekko80 wrote:
Mi serve aiuto con una query:

Io ho una tebella Files, con varie colonne: A, B, C, etc
E a seconda se la colonna contiene un valore o un altro, mi seleziona la colonna corrispondente, se per esempio la colonna contiene il valore A mi seleziona la colonna A, se invece contiene il valore B mi seleziona la colonna B.

La queri che vorrei fare è questa:

SELECT ColonnaA FROM [Files] WHERE ContenutoColonnaA= A
OR
SELECT ColonnaB FROM [Files] WHERE ContenutoColonnaB= B

come si fa? Uso dei CASE, degli IF?

pernso ti sia benissimo reso conto che la modellazione che hai fatto e' davvero obrobiosa
puoi pero' nidificare dei CASE come di seguito,
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t (
Id int NOT NULL,
cA varchar(5) NULL,
cB varchar(5) NULL,
cC varchar(5) NULL
);
GO
INSERT INTO dbo.t VALUES ( 1, 'X', NULL, NULL );
INSERT INTO dbo.t VALUES ( 2, NULL, 'X', NULL );
INSERT INTO dbo.t VALUES ( 3, NULL, NULL, 'X' );
INSERT INTO dbo.t VALUES ( 4, 'X', 'X', 'X' );
PROBLEMA.. GO
DECLARE @p varchar(5);
SET @p = 'X';
SELECT CASE WHEN cA = @p THEN 'colA:' + cA ELSE
CASE WHEN cB = @p THEN 'colB:' + cB ELSE
CASE WHEN cC = @p THEN 'colC:' + cC ELSE 'ERR' END
END
END AS [Result]
FROM dbo.t;
GO
DROP TABLE dbo.t;
--<-------
Result
----------
colA
colB
colC
colA

ma come vedi rimane il problema della riga 4 che andrebbe gestito con un'altra serie di CASE.. ripeto, e' una cosa orribile
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
Microsoft Most Valuable Professional
Re: Query...aiuto, chi la sa fare?
Andrea Montanari non è online. Ultima attività: 05/09/2008 19.11.14Andrea Montanari
Inserito il: 04 luglio 2008 12.47
contributi / Top Poster / Community manager / www.asql.biz / 928 messaggi dal 27 lug 2005 Istalla Microsoft Silverlight!
Andrea Montanari [MVP] [Staff] wrote:


UPDATE Andrea
SET [Ortografia] = 0




saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


maltra - 761 pt
vladimiro - 502 pt
fabrica - 180 pt

Ultimi vincitori: fabrica, vladimiro, PeppeDotNet

Iscriviti anche tu e raccogli punti. Questo mese in palio VS 2008 + Windows Server 2008, ReShaper e 1 ebook!



COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums