Ciao a tutti, ho una tabella con tre id: IDEvento, IDCentro, IDElemento e quando faccio una select mi da:
IDEventoIDCentroIDElemento
1 1 1
8 1 12929
17 1 28745
18 1 30547
19 1 32349
14 1 23393
1 1 25163
16 1 26953
9 1 14703
2 2 18275
7 2 11147
2 2 16479
4 2 7353
3 3 9341
3 3 9355
2 3 1739

Vorrei avere una query che non mi dia delle tuple ripetute per i valori di IDEvento, IDCentro e quindi non dovrei avere:

1 1 25163
2 2 16479
3 3 9355

Ho provato ad utilizzare questa query:

SELECT DISTINCT IDEvento, IDCentro, IDElemento
FROM Avvenuto
ORDER BY IDCentro

ma ho sempre le tuple doppie, come posso fare?
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
non direi che siano tuple "doppie".. sono "doppie" solo nel termine di un'eventuale aggregazione che tu vorresti probabilmente fare sui termini dell'attributo di IdEvento ed IdCentro..
ora, la cosa e' tendenzialmente fattibile, ad esempio forzando un raggruppamento appunto per questi due elementi dell'attributo, ma la proiezione risultante cosa dovrebbe "proiettare" per l'attributo IdElemento?
per spiegarci, presupponendo uno scenario simile a
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t (
IdEvento int NOT NULL,
IdCentro int NOT NULL,
IdElemento int NOT NULL
);
INSERT INTO dbo.t VALUES ( 1, 1, 1 );
INSERT INTO dbo.t VALUES ( 2, 1, 1 );
INSERT INTO dbo.t VALUES ( 2, 1, 2 );
INSERT INTO dbo.t VALUES ( 3, 1, 1 );
INSERT INTO dbo.t VALUES ( 3, 1, 2 );
INSERT INTO dbo.t VALUES ( 3, 1, 3 );
GO
SELECT DISTINCT t.IdEvento, t.IdCentro, MAX(t.IdElemento) AS [IdElemento]
FROM dbo.t t
GROUP BY t.IdEvento, t.IdCentro;
GO
DROP TABLE dbo.t;
--<---------
IdEvento IdCentro IdElemento
----------- ----------- -----------
1 1 1
2 1 2
3 1 3

il raggruppamento per {t.IdEvento + t.IdCentro} soddisfa la tua specifica ma si rende necessaria una funzione di aggregazione scalare per IdElemento.. nell'esempio di cui sopra e' stato impostato il MAX del raggruppamento previsto per la colonna IdElemento, ma questo non ha molto senso se non in un contesto didattico.. bisognerebbe veriricare quali sono le tue regole di business per l'effettiva proiezione desiderata..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

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.