Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
| hobby:development:sql:select:query_0001 [2021/01/04 10:23] – mauro.cortese | hobby:development:sql:select:query_0001 [2021/01/04 12:35] (versione attuale) – mauro.cortese | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| {{: | {{: | ||
| - | [[hobby: | + | [[hobby: |
| //<fc # | //<fc # | ||
| \\ | \\ | ||
| \\ | \\ | ||
| - | Il problema in analisi è quello che si presenta ogni volta che si vuole ottenere l' | + | Il problema in analisi è quello che si presenta ogni volta che si vuole ottenere l' |
| Un esempio molto semplice potrà far capire meglio di tante spiegazioni | Un esempio molto semplice potrà far capire meglio di tante spiegazioni | ||
| Serviamoci della seguente tabella di esempio: | Serviamoci della seguente tabella di esempio: | ||
| - | <code sql> | + | <sxh sql> |
| - | USE DbTmp | + | USE DbTemp |
| IF OBJECT_ID(N' | IF OBJECT_ID(N' | ||
| - | | + | DROP TABLE dbo.tblHistory |
| -- Create table [dbo].[tblHistory] | -- Create table [dbo].[tblHistory] | ||
| Linea 18: | Linea 18: | ||
| CREATE TABLE dbo.tblHistory ( | CREATE TABLE dbo.tblHistory ( | ||
| - | | + | IdHistory INT NULL DEFAULT (0) |
| - | IdData int NULL DEFAULT (0), | + | ,IdData int NULL DEFAULT (0) |
| - | | + | , |
| ) | ) | ||
| ON [PRIMARY] | ON [PRIMARY] | ||
| - | </code> | + | </sxh> |
| che andremo a popolare con pochi dati ma sufficienti per capire | che andremo a popolare con pochi dati ma sufficienti per capire | ||
| - | <code sql> | + | <sxh sql> |
| - | INSERT INTO dbo.tblHistory (IdHistory, IdData, Description) | + | INSERT INTO dbo.tblHistory (IdHistory, IdData, Description) VALUES |
| - | VALUES | + | (1, 1, ' |
| - | (1, 1, N' | + | ,(2, 1, ' |
| - | ,(2, 1, N' | + | ,(3, 1, ' |
| - | ,(3, 1, N' | + | ,(4, 2, ' |
| - | ,(4, 2, N' | + | ,(5, 2, ' |
| - | ,(5, 2, N' | + | ,(6, 2, ' |
| - | ,(6, 2, N' | + | ,(7, 3, ' |
| - | ,(7, 3, N' | + | ,(8, 3, ' |
| - | ,(8, 3, N' | + | ,(9, 4, ' |
| - | ,(9, 4, N' | + | ,(10, 4, ' |
| - | ,(10, 4, N' | + | </sxh> |
| - | </code> | + | |
| quindi con una semplice select otterremo: | quindi con una semplice select otterremo: | ||
| - | <code sql> | + | <sxh sql> |
| SELECT * FROM dbo.tblHistory; | SELECT * FROM dbo.tblHistory; | ||
| - | </code> | + | </sxh> |
| ^IdHistory^IdData^Description^ | ^IdHistory^IdData^Description^ | ||
| Linea 64: | Linea 63: | ||
| La soluzione è relativamente semplice e consiste nel ricorrere ad un self-join come quello che segue: | La soluzione è relativamente semplice e consiste nel ricorrere ad un self-join come quello che segue: | ||
| - | <code sql> | + | <sxh sql> |
| SELECT | SELECT | ||
| - | | + | tblA.* |
| FROM tblHistory tblA | FROM tblHistory tblA | ||
| - | | + | LEFT JOIN tblHistory tblB ON tblA.IdData = tblB.IdData AND tblA.IdHistory < tblB.IdHistory |
| WHERE tblB.IdHistory IS NULL | WHERE tblB.IdHistory IS NULL | ||
| - | </code> | + | </sxh> |
| ^IdHistory^IdData^Description^ | ^IdHistory^IdData^Description^ | ||