Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Domanda sulla SELECT (MSSQL Express)
martedì 10 marzo 2009 - 09.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lordwaizard
Profilo
| Senior Member
294
messaggi | Data Invio:
mar 10 mar 2009 - 09:48
Ho realizzato questa stringa sql e funziona correttamente.
SELECT @idm = MAX(id),@iva = MAX(iva),@iva = MAX(importo),@r = MAX(r) FROM
Il problema è che ovviamente con la direttiva MAX ho solo una riga, come posso ciclare tutte le righe e salvare nelle variabili?
Grazie in anticipo.
Davide
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 10 mar 2009 - 10:55
>Ho realizzato questa stringa sql e funziona correttamente.
>SELECT @idm = MAX(id),@iva = MAX(iva),@iva = MAX(importo),@r
>= MAX(r) FROM
>
>Il problema è che ovviamente con la direttiva MAX ho solo una
>riga, come posso ciclare tutte le righe e salvare nelle variabili?
Ciao Davide,
Puoi postare un exempio completo con la struttura della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che vorresti ottenere con quei dati?
>Grazie in anticipo.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
lordwaizard
Profilo
| Senior Member
294
messaggi | Data Invio:
mar 10 mar 2009 - 12:19
TABELLA:
CREATE TABLE [dbo].[primanota](
[id] [int] IDENTITY(1,1) NOT NULL,
[r] [int] NULL,
[op] [int] NOT NULL,
[reg] [int] NOT NULL,
[regdata] [datetime] NOT NULL,
[doc] [nvarchar](50) NOT NULL,
[docdata] [datetime] NOT NULL,
[pro] [int] NOT NULL,
[descri] [nvarchar](150) NOT NULL,
[dare] [int] NOT NULL,
[avere] [int] NOT NULL,
[iva] [nvarchar](50) NOT NULL,
[importo] [decimal](18, 2) NOT NULL,
[utente] [nvarchar](50) NOT NULL,
[data] [datetime] NOT NULL,
[annofis] [int] NOT NULL,
[chiudi] [datetime] NULL,
[nascondi] [int] NULL,
CONSTRAINT [PK_primanota] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
QUERY:
DECLARE @idm int
DECLARE @r int
DECLARE @iva nvarchar(50)
DECLARE @importo decimal
SELECT @idm = MAX(id),@iva = MAX(iva),@iva = MAX(importo),@r = MAX(r) FROM primanota WHERE op = '2' AND dare = '132948' AND nascondi IS NULL
RISULTATO:
SELECT * FROM primanota WHERE id = @idm-1
SELECT * FROM primanota WHERE id = @idm
SELECT TOP (1) * FROM primanota WHERE r = @r ORDER BY id DESC
Il problema è semplice se io utilizzo la funzione MAX lui considera solo la prima riga e non tutte le righe, ho invece la necessita che questa operazione venga replicata per tutte le righe.
Per ovviare in vb potrei risolverla così:
SELECT id FROM primanota WHERE op = '2' AND dare = '132948' AND nascondi IS
memorizzo tutti gli id in un array.
poi ciclo ogni volta così
DECLARE @idm int
DECLARE @r int
DECLARE @iva nvarchar(50)
DECLARE @importo decimal
SELECT @idm = MAX(id),@iva = MAX(iva),@iva = MAX(importo),@r = MAX(r) FROM primanota WHERE id = '5'
RISULTATO:
SELECT * FROM primanota WHERE id = @idm-1
SELECT * FROM primanota WHERE id = @idm
SELECT TOP (1) * FROM primanota WHERE r = @r ORDER BY id DESC
Vorrei fare tutto da sql senza passare da sql a vb.
Si può fare?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 10 mar 2009 - 12:51
>TABELLA:
>
>CREATE TABLE [dbo].[primanota](
> [id] [int] IDENTITY(1,1) NOT NULL,
> [r] [int] NULL,
> [op] [int] NOT NULL,
> [reg] [int] NOT NULL,
> [regdata] [datetime] NOT NULL,
> [doc] [nvarchar](50) NOT NULL,
> [docdata] [datetime] NOT NULL,
> [pro] [int] NOT NULL,
> [descri] [nvarchar](150) NOT NULL,
> [dare] [int] NOT NULL,
> [avere] [int] NOT NULL,
> [iva] [nvarchar](50) NOT NULL,
> [importo] [decimal](18, 2) NOT NULL,
> [utente] [nvarchar](50) NOT NULL,
> [data] [datetime] NOT NULL,
> [annofis] [int] NOT NULL,
> [chiudi] [datetime] NULL,
> [nascondi] [int] NULL,
> CONSTRAINT [PK_primanota] PRIMARY KEY CLUSTERED
>(
> [id] ASC
>)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY
>= OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
>) ON [PRIMARY]
>
>
>
>QUERY:
Fermo, non ti ho chiesto le query, ma semplicemente dei dati di prova (INSERT INTO) ed il result set finale che vuoi ottenere con quei dati.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
lordwaizard
Profilo
| Senior Member
294
messaggi | Data Invio:
mar 10 mar 2009 - 14:07
Ho bisogno di tutti i dati della tabella della riga dell'id, e della riga precedente dell'id.
E per finire l'ultima riga dell'operazione ricavata dalla colonna r (il valore della r preso dalla riga dell'id della ricerca)
Quindi servono tutti i dati immessi di tutte le righe raggruppati così
ID
1
2
3
4
5
Risultato righe visualizzate
Primo blocco
1
2
5
Secondo blocco
3
4
5
Usando max riesco a vedere solo il secondo dovrei invece visualizzare n blocchi.
Grazie scusa se ti sto facendo impazzire
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 10 mar 2009 - 14:31
>Grazie scusa se ti sto facendo impazzire
Eh, puoi dirlo forte
Per la terza volta ti chiedo di allegare i comandi di INSERT INTO ed il result set finale che vuoi ottenere con quei dati, altrimenti dubito che potrò aiutarti.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
lordwaizard
Profilo
| Senior Member
294
messaggi | Data Invio:
mar 10 mar 2009 - 16:40
INSERT:
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 108, 0, 2, 0, '2009-03-09 00:00:00.000', '131', '2009-03-09 00:00:00.000', 0, 'italia fatt 234 567', 320604, 0, '20', 300.00, 'paolo', '2009-03-09 16:47:03.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 109, 0, 2, 0, '2009-03-09 00:00:00.000', '131', '2009-03-09 00:00:00.000', 0, 'italia fatt 234 567', 132948, 0, '20', 60.00, 'paolo', '2009-03-09 16:47:54.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 110, 0, 2, 0, '2009-03-09 00:00:00.000', '131', '2009-03-09 00:00:00.000', 0, 'italia fatt 234 567', 0, 247012, '20', 360.00, 'paolo', '2009-03-09 16:48:15.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 111, 1, 0, 0, '2009-03-09 00:00:00.000', '138', '2009-03-09 00:00:00.000', 0, 'errato', 134100, 0, '', 0.00, 'paolo', '2009-03-09 17:28:39.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 112, 1, 0, 0, '2009-03-09 00:00:00.000', '140', '2009-03-09 00:00:00.000', 0, 'errat', 0, 134100, '0', 0.00, 'paolo', '2009-03-09 17:30:06.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 113, 1, 0, 0, '2009-03-10 00:00:00.000', '148', '2009-03-10 00:00:00.000', 0, 'ciao', 0, 0, '20', 222.00, 'davide', '2009-03-10 12:54:02.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 114, 1, 0, 0, '2009-03-10 00:00:00.000', '148', '2009-03-10 00:00:00.000', 0, 'ciao', 0, 0, '20', 222.00, 'davide', '2009-03-10 12:54:03.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 115, 1, 0, 0, '2009-03-10 00:00:00.000', '149', '2009-03-10 00:00:00.000', 0, 'ciao', 0, 0, '20', 222.00, 'davide', '2009-03-10 14:40:35.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 116, 3, 2, 0, '2009-03-09 00:00:00.000', '131', '2009-03-09 00:00:00.000', 0, 'italia fatt 234 567', 320604, 0, '20', 300.00, 'paolo', '2009-03-09 16:47:03.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 117, 3, 2, 0, '2009-03-09 00:00:00.000', '131', '2009-03-09 00:00:00.000', 0, 'italia fatt 234 567', 132948, 0, '20', 60.00, 'paolo', '2009-03-09 16:47:54.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 118, 3, 2, 0, '2009-03-09 00:00:00.000', '131', '2009-03-09 00:00:00.000', 0, 'italia fatt 234 567', 0, 247012, '20', 360.00, 'paolo', '2009-03-09 16:48:15.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 119, 4, 0, 0, '2009-03-09 00:00:00.000', '138', '2009-03-09 00:00:00.000', 0, 'errato', 134100, 0, '', 0.00, 'paolo', '2009-03-09 17:28:39.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 120, 4, 0, 0, '2009-03-09 00:00:00.000', '140', '2009-03-09 00:00:00.000', 0, 'errat', 0, 134100, '0', 0.00, 'paolo', '2009-03-09 17:30:06.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 121, 4, 0, 0, '2009-03-10 00:00:00.000', '148', '2009-03-10 00:00:00.000', 0, 'ciao', 0, 0, '20', 222.00, 'davide', '2009-03-10 12:54:02.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 122, 4, 0, 0, '2009-03-10 00:00:00.000', '148', '2009-03-10 00:00:00.000', 0, 'ciao', 0, 0, '20', 222.00, 'davide', '2009-03-10 12:54:03.000', 0, NULL, NULL );
INSERT INTO [dbo].[primanota] ([id], [r], [op], [reg], [regdata], [doc], [docdata], [pro], [descri], [dare], [avere], [iva], [importo], [utente], [data], [annofis], [chiudi], [nascondi])
VALUES ( 123, 4, 0, 0, '2009-03-10 00:00:00.000', '149', '2009-03-10 00:00:00.000', 0, 'ciao', 0, 0, '20', 222.00, 'davide', '2009-03-10 14:40:35.000', 0, NULL, NULL );
RISULTATO FINALE IN ORDINE CORRETTO (id delle righe da visualizzare):
108
109
110
116
117
118
Torna su
Stanze Forum
Elenco Threads
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 !