Problemi query sql server 2000

domenica 23 agosto 2009 - 18.53

ReRosso Profilo | Junior Member

Ciao ragazzi ho un query che in Access funziona benissimo:

UPDATE sedute INNER JOIN pres ON sedute.id_sed=pres.c_sed SET pres.eli = True
WHERE (((sedute.c_nom)=[?]) AND ((sedute.dat)>Now()));

ma non c'è modo di farla funzionare in sql server......

suggerimenti per la sintassi????

ciao e grazie

lbenaglia Profilo | Guru

>suggerimenti per la sintassi????

UPDATE P SET P.eli = 1 FROM dbo.pres AS P JOIN dbo.sedute AS S ON P.c_sed = S.id_sed WHERE S.c_nom = @c_nom AND S.dat > CURRENT_TIMESTAMP;

Ad ogni modo senza un esempio completo con la struttura delle tabelle, alcune righe di prova ed il risultato che vuoi ottenere non è possibile fornire un esempio preciso.

>ciao e grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ReRosso Profilo | Junior Member

Niente...

il messaggio di errore che mi restituisce asp.net è:"Sintassi non corretta in prossimità di P"


??????

ReRosso Profilo | Junior Member

Scusa errore mio...la sintassi era corretta ma purtroppo la query non funziona....

Ti spiego meglio quello che devo fare:

ho due tabelle; [sedute] e [prestazioni], la prima ha una chiave primaria "sid", la seconda ha la chiave esterna "c_sid". All' aggiornamento del campo "eli" della prima devo aggiornare a catena il campo "eli" della seconda. Nota bene ho parlato di chiavi primarie ma in raltà non ho creato nessuna relazione in sql server: Ti ripropongo l query che mi hai suggerito (ho modificato i nomi dei campi)

UPDATE DS set DS.eli = 1 FROM dbo.d_sedute AS DS JOIN dbo.sedute AS D ON DS.c_sid = D.sid WHERE D.sid =@sid AND D.dat > CURRENT_TIMESTAMP

lbenaglia Profilo | Guru

>Scusa errore mio...la sintassi era corretta ma purtroppo la query
>non funziona....
Quello che devi fare è semplicemente postare i comandi di CREATE TABLE delle due tabelle comprensivi di constraints, alcune righe di prova (INSERT INTO) ed il result set finale che intendi ottenere a partire da quei dati.
In mancanza di queste informazioni non è possibile aiutarti.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ReRosso Profilo | Junior Member

Come avrai capito sono poco efferato sull'argomento ma farò del mio meglio per spiegarmi:

script tabella sedute:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sedute]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[sedute]
GO

CREATE TABLE [dbo].[sedute] (
[sid] [int] IDENTITY (1, 1) NOT NULL ,
[c_pid] [int] NULL ,
[dat] [smalldatetime] NULL ,
[c_mid] [int] NULL ,
[c_did] [int] NULL ,
[c_tid] [int] NULL ,
[c_rid] [int] NULL ,
[f_ter] [bit] NULL ,
[f_pre] [bit] NULL ,
[rim] [bit] NULL ,
[tex] [nvarchar] (2000) COLLATE Latin1_General_CI_AS NULL ,
[d_cre] [smalldatetime] NULL ,
[u_cre] [int] NULL ,
[d_mod] [smalldatetime] NULL ,
[u_mod] [int] NULL ,
[eli] [bit] NULL
) ON [PRIMARY]

GO

script tabella d_sedute:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_sedute]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[d_sedute]
GO

CREATE TABLE [dbo].[d_sedute] (
[dsid] [int] IDENTITY (1, 1) NOT NULL ,
[c_sid] [int] NOT NULL ,
[c_prid] [int] NULL ,
[d_cre] [smalldatetime] NULL ,
[u_cre] [int] NULL ,
[d_mod] [smalldatetime] NULL ,
[u_mod] [int] NULL ,
[eli] [bit] NULL
) ON [PRIMARY]
GO

istruzione insert into tabella sedute: (presa dal codice asp.net)
cmd = New SqlCommand("insert into sedute (c_pid, dat, c_mid, c_did, c_tid, rim, tex, d_cre, u_cre, d_mod, u_mod, eli, f_ter, f_pre) values (@c_pid, @dat, @c_mid, @c_did, @c_tid, @rim, @tex, @d_cre, @u_cre, @d_mod, @u_mod, '0', @f_ter, '0')", cn)

istruzione insert into tabella d_sedute:
cmd = New SqlCommand("insert into d_sedute (c_sid, c_prid, d_cre, u_cre, d_mod, u_mod, eli) values (@c_sid, @c_prid, @d_cre, @u_cre, @d_mod, @u_mod, '0')", cn)

IL RISULTATO CHE VOGLIO OTTENERE E' CHE AGGIORNANDO IL CAMPO"ELI" DELLA TABELLA "SEDUTE"; SI AGGIORNI IL CAMPO "ELI" DEI RECORD DELLA TABELLA D_SEDUTE DOVE C'E' CORRISPONDENZA TRA IL CAMPO
"PID" (CHIAVE PRIMARIA DELLA TABELLA SEDUTE) E IL CAMPO "C_PID" (CHIAVE ESTERNA DELLA TABELLA D_SEDUTE)

SPERO DI ESSERE STATO CHIARO...GRAZIE ANCORA
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