Newsgroup: it.comp.software.database
Titolo: [aiuto] Si puo' scrivere in SQL?

Ciao a tutti,
dovrai fare quanto segue ma non so se la cosa e' scrivibile con una sola
query (sto usando come db ms sql server per una tesi universitaria).
Ho una tabella (principale) cosi' fatta:
ID |  nome  | cognome ....
1     david      pinuc
2     daniele    biret
3     dario       pomigle
...
E in un'altra tabella (secondaria) alcuni dati di interesse:
idi | ID
12   1
12   10
Dalla prima tabella devo recuperare i record relativi agli ID che compaiono
nella sola seconda tabella, in altre parole qualcosa del tipo:
SELECT * FROM principale WHERE ID=1 OR ID=10 (che sono gli ID relativi a
idi=12).
Poiche' non so a priori i valori 1 e 10, come faccio a dire "enumerami tutti
gli ID nella tabella secondaria e recuperami i record relativi nella
pincipale"???
Spero di essermi riuscito a spiegare...
GRAZIE!

 idi=12).
un qualcosa del tipo
SELECT * FROM principale WHERE ID in (select ID from tabella 2)
Ciao
Matteo

 query (sto usando come db ms sql server per una tesi universitaria).
la vedo dura per la tua tesi...
Quello che devi fare e' semplicemente una join

 Quello che devi fare e' semplicemente una join
Col Join cio' un problema, ma verifico se altri consigli trasversali me lo
fannoi risolvere...

 SELECT * FROM principale WHERE ID in (select ID from tabella 2)
E' la stessa cosa che mi avevano suggerito altrove, ma ad es. dovessi fare
qualcosa del genere pare non funzionare:
INSERT INTO prf_1 (domid,id) VALUES (1,ID) WHERE ID IN (SELECT ID FROM
tuple_irrisolte)
Si puo' fare una cosa del genere?
Su la documentazione di Sql server trovo anche una soluzione piu' complessa,
ma non capisco dove andrebbe inserito l'INSERT:
DECLARE @CursorVar CURSOR
SET @CursorVar = CURSOR SCROLL DYNAMIC
FOR
SELECT LastName, FirstName
FROM Northwind.dbo.Employees
WHERE LastName like 'B%'
OPEN @CursorVar
FETCH NEXT FROM @CursorVar
WHILE @@FETCH_STATUS = 0
BEGIN
    FETCH NEXT FROM @CursorVar
END
CLOSE @CursorVar
DEALLOCATE @CursorVar
Grazie.

 Spero di essermi riuscito a spiegare...
Mica tanto...non si capisce molto nel tuo esempio soprattutto quali sono le
chiavi
tra le tabelle...cmq prova a vedere se adattandola questa soluzione
funziona:
=============
insert into
 prf_1
  (domid, ID)
select
 1,
 
T.ID
from
 principale P
 join
 tuple_irrisolte T
  on 
P.ID
 = T.idi
=============
P.s. Evita l'utilizzo dei cursori...nel 99% dei casi la soluzione
puo' essere SET-oriented.
Ciao.
-- 
Fabrizio Maccarrone
--
YAMSSQLU
(Yet Another MSSQL User)

Dichiarando un cursore nel quale metti in joint la tabella contenente i nomi
con quella contenente i codici progressivi. Così facendo ti scorri,
comunque, tutte le occorrenze presenti che soddisfano i criteri nella where.
Poi, se c' è un opzione FOR UPDATE/FOR INSERT, per il db che utilizzi, da
inserire nella declare del cursore, usala. Probabilmente dovresti dirgi di
leggere, nel ciclo di fetch, le tabelle non in modo esclusivo, con un WITH
HOLD, a questo punto, nel ciclo puoi fare tutte le update che vuoi, per le
insert, potrebbe darti qualche problema se l' occorrenza che inserisci con
INSERT ha una chiave(indice) uquale ad un altra occorrenza già presente.
Dovrebbe andare in chiave doppia.
"NoSpam" <viaseg...@SPAMdespammed.com> ha scritto nel messaggio
news:zQhuc.80234$Qc.32...@twister1.libero.it...


L' insert vą dopo la Fetch, quando ho letto i campi che mi danno la
chiave/index per accedere alla tabella, perņ, non puoi inserire un
occorrenza con un indice gią presente, andrebbe in chiave doppia. Puoi
utilizzarla solo per un nuovo elemento.
"Via" <viaseg...@SPAMdespammed.com> ha scritto nel messaggio
news:QZluc.81047$Qc.32...@twister1.libero.it...
