SELECT SQL SERVER 2005

venerdì 26 dicembre 2008 - 15.29

denis.basei Profilo | Senior Member

Data una tabella Carico_Variabili così strutturata..

CREATE TABLE [dbo].[Carico_Variabili](
[IDCarico] [int] NOT NULL,
[IDTestata] [smallint] NOT NULL,
[IDPadre] [smallint] NOT NULL,
[IDFiglio] [smallint] NOT NULL,
[IDVariante] [smallint] NOT NULL,
[CodVariante] [char](18) COLLATE Latin1_General_CS_AS NULL,
[Parametro1] [numeric](6, 2) NULL,
[Parametro2] [numeric](6, 2) NULL,
CONSTRAINT [PK_Carico_Variabili] PRIMARY KEY CLUSTERED
(
[IDCarico] ASC,
[IDTestata] ASC,
[IDPadre] ASC,
[IDFiglio] ASC,
[IDVariante] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

con alcuni records di prova...

insert into Carico_Variabili
values (4, 1, 5, 5, 5, '001C5', 0, 0)

insert into Carico_Variabili
values (4, 1, 5, 5, 5, '002420', 0, 0)

insert into Carico_Variabili
values (4, 1, 5, 10, 5, '00198', 0, 0)

insert into Carico_Variabili
values (4, 1, 5, 10, 5, '007123403', 0, 0)

insert into Carico_Variabili
values (4, 1, 5, 10, 5, '050L', 0, 0)

Vorrei trovare il modo per costruire una SELECT che mi ritorni IDCarico, IDTestata, IDPadre e IDFiglio che hanno associati due codici varianti (CodVariante) particolari: CodVariante = '00198' AND CodVariante like ('007____03')
Nel caso nostro si tratta del record 4, 1, 5, 10


Grazie e tutti e buon Santo Stefano!
Denis B. - www.baseiengineering.com

Jok83 Profilo | Junior Member

Ciao,
io ho provato a simulare il tutto su Sql e con questa
select idcarico,idtestata,idpadre,idfiglio from dbo.carico_variabili where codvariante ='00198'
intersect
select idcarico,idtestata,idpadre,idfiglio from carico_variabili where codvariante like '007%03'
ho ottenuto quello che credo tu voglia...
Però quando ho inserito i valore da te proposti ho dovuto rimuovere le chiavi in quanto l'idvariante che è il 5°campo in chiave è impostato semnpre a 5....quindi questo
insert into Carico_Variabili
values (4, 1, 5, 10, 5, '00198', 0, 0)
e questo:
insert into Carico_Variabili
values (4, 1, 5, 10, 5, '007123403', 0, 0)

hanno la stessa chiave primaria 4,1,5,10,5 e quindi o metti anche il codvariante in chiave oppure idvariante deve essere identificativo..

spero d'aver capito bene ciao..

denis.basei Profilo | Senior Member

Intanto grazie per avermi risposto.
Avevo trovato una soluzione (o meglio mi è stata suggerita), facendo una query di questo tipo:

SELECT A.IDCarico, A.IDTestata, A.IDPadre, A.IDFiglio
FROM [dbo].[Carico_Variabili] A
INNER JOIN [dbo].[Carico_Variabili] B ON A.IDCarico = B.IDCarico
AND A.IDTestata = B.IDTestata
AND A.IDPadre = B.IDPadre
AND A.IDFiglio = B.IDFiglio
WHERE A.CodVariante = '00198' AND B.CodVariante LIKE '007%03'

Comunque anche la tua con la clausola INTERSECT, che non conoscevo, produce lo stesso risultato.
Denis B. - www.baseiengineering.com
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