>salve ragazzi,
Ciao!
>ho provato con il wizard per le query e ho dovuto per forza duplicare
>la tabella 'città' (e i due duplicati sono collegati tra essi...)
>ma la duplicazione non è che mi convince tantissimo, per via
>del fatto che in un futuro non molto lontano dovrò intervenire
>su database con update, insert ecc, ed ho paura di avere problemi
>in termini di tabella su cui intervenire...
ma è una duplicazione logica oppure hai creato due tabelle fisicamente?
>qualcuno d voi saprebbe consigliarmi qualcosa in merito?
ti allego uno script di esempio per SQL Server 2005, che, se non ricordo male, è il tuo DBMS (ricordati sempre di indicare le cose che utilizzi per facilitare le risposte ):
USE tempdb;
GO
-- creo la tabella cittadino
IF NOT EXISTS(SELECT * FROM sysobjects WHERE id = object_id(N'Cittadino'))
CREATE TABLE Cittadino
(
IdCittadino int IDENTITY(1,1) NOT NULL,
Nome varchar(30) NOT NULL,
Cognome varchar(30) NOT NULL,
IdCittaNascita smallint NOT NULL,
IdCittaResidenza smallint NOT NULL,
CONSTRAINT PK_Cittadino PRIMARY KEY CLUSTERED
(
IdCittadino
)
)
GO
-- creo la tabella citta
IF NOT EXISTS(SELECT * FROM sysobjects WHERE id = object_id(N'Citta'))
CREATE TABLE Citta
(
IdCitta smallint IDENTITY(1,1) NOT NULL,
NomeCitta varchar(30) NOT NULL,
CONSTRAINT PK_Citta PRIMARY KEY CLUSTERED
(
IdCitta
)
)
GO
-- creo le relazioni
ALTER TABLE Cittadino
ADD CONSTRAINT FK_Cittadino_CittaNascita
FOREIGN KEY (IDCittaNascita)
REFERENCES Citta (IDCitta)
GO
ALTER TABLE Cittadino
ADD CONSTRAINT FK_Cittadino_CittaResidenza
FOREIGN KEY (IDCittaResidenza)
REFERENCES Citta (IDCitta)
GO
-- popolo i dati di prova
INSERT Citta
SELECT 'Parma'
INSERT Citta
SELECT 'Collecchio'
INSERT Citta
SELECT 'Venezia'
INSERT Citta
SELECT 'Noceto'
INSERT Citta
SELECT 'Fidenza'
INSERT Citta
SELECT 'Londra'
INSERT Cittadino
SELECT 'Alessandro', 'Alpi', 1, 1
INSERT Cittadino
SELECT 'Silvia', 'Pedretti', 2, 2
INSERT Cittadino
SELECT 'Daniele', 'Zanella', 3, 4
INSERT Cittadino
SELECT 'Michael', 'Denny', 6, 5
INSERT Cittadino
SELECT 'Marco', 'Rossi', 5, 5
-- dati
SELECT * FROM Cittadino
SELECT * FROM Citta
-- ecco la join che devi fare per ottenere tutto ciò che ti serve
SELECT
C.Nome
, C.Cognome
, CodiceCittaNascita = CN.IdCitta
, CittaNascita = CN.NomeCitta
, CodiceCittaResidenza = CR.IdCitta
, CittaResidenza = CR.NomeCitta
FROM
Cittadino C
JOIN Citta CN ON C.IdCittaNascita = CN.IdCitta
JOIN Citta CR ON C.IdCittaResidenza = CR.IdCitta
-- pulizia
DROP TABLE Cittadino
DROP TABLE Citta
è semplice, creo la tabella cittadino e la tabella citta, e poi creo le relazioni con le FOREIGN KEY ed infine scrivo una query che mi ritorna tutto quello che serve..
>grazie a chi risponderà
di nulla!
Alx81 =)
http://blogs.dotnethell.it/suxstellino