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
Sql Server una query che non riesco a costruire
mercoledì 05 novembre 2008 - 11.00
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Angel_Dark75
Profilo
| Newbie
8
messaggi | Data Invio:
mer 5 nov 2008 - 11:00
Buongiorno e scusate l'intrusione, ho un problema e sono 2 giorni che non riesco a risolverlo.
Il problema è che devo costruire una query ma non so proprio dove cercare e cosa cercare...
in breve io ho due tabelle Ordini e Commesse dove come PK in commesse ho IdCommessa che è anche FK in Ordini
mentre in Ordini c'è IdOrder come PK.
Se una Commessa viene impegnata finisce il suo IdCommessa finisce in Ordini associata a IdOrder.
Ecco io adesso vorrei visualizzare tutti le entità di una Commessa e se la stessa Commessa risulta in Ordini
vedere anche quei campi.
Ho provato con la join ma riesco a visualizzare o solo IdCommessa che sono Ordini oppure solo IdCommessa
che non sono impegnate...
Spero di essere riuscito a spiegarmi bene...
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 5 nov 2008 - 11:13
>Buongiorno e scusate l'intrusione, ho un problema e sono 2 giorni
>che non riesco a risolverlo.
Ciao!
>Ho provato con la join ma riesco a visualizzare o solo IdCommessa
>che sono Ordini oppure solo IdCommessa
>che non sono impegnate...
Dovresti postare le CREATE delle tabelle e il risultato di esempio che vuoi ottenere.
Inoltre, che RDBMS utilizzi?
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Angel_Dark75
Profilo
| Newbie
8
messaggi | Data Invio:
mer 5 nov 2008 - 11:31
allora le CREATE sono queste:
CREATE TABLE [dbo].[CommesseA](
[IdCommessa] [int] IDENTITY(1,1) NOT NULL,
[Commessa] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[Kit] [int] NOT NULL,
[RCO] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[Tipo] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[Mt] [int] NOT NULL,
[Qta] [int] NOT NULL,
[Situazione] [int] NULL,
[Note] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_CommesseA] PRIMARY KEY CLUSTERED
(
[IdCommessa] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Ordini](
[IdOrder] [int] IDENTITY(1,1) NOT NULL,
[IdCommessa] [int] NOT NULL,
[IdCavo] [int] NOT NULL,
[Prelevare] [int] NOT NULL CONSTRAINT [DF_Ordini_Prelevati] DEFAULT ((0)),
[Ubicazione] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL CONSTRAINT [DF_Ordini_Ubicazione] DEFAULT ((0)),
[Box] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL CONSTRAINT [DF_Ordini_Box] DEFAULT ((0)),
CONSTRAINT [PK_Ordini] PRIMARY KEY CLUSTERED
(
[IdOrder] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Con RDBMS che cosa intendi?!
Comunque sono a riuscito ad ottenere il risultato ma non sono proprio sicuro se sia corretta la sintassi...
SELECT CommesseA.IdCommessa, CommesseA.Commessa, CommesseA.Kit, CommesseA.RCO, CommesseA.Tipo, CommesseA.Mt, CommesseA.Qta,
CommesseA.Situazione,Ordini.Prelevare,Ordini.Ubicazione,Ordini.Box, CommesseA.Note
FROM MagazzinoARP.dbo.CommesseA Left JOIN
MagazzinoARP.dbo.Ordini ON CommesseA.IdCommessa = Ordini.IdCommessa
WHERE (CommesseA.Commessa = '2991450')
Grazie mille!!
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 5 nov 2008 - 17:02
>Con RDBMS che cosa intendi?!
Sembra che il tuo sia SQL Server
Relational Data Base Management System.
http://it.wikipedia.org/wiki/RDBMS
>Comunque sono a riuscito ad ottenere il risultato ma non sono
>proprio sicuro se sia corretta la sintassi...
Con quello che hai scritto nella select ottieni tutti i record di CommesseA indipendentemente dal fatto che esistano Ordini dove la commessa vale '2991450'.
A te servono tutti gli Ordini indipendentemente dall'esistenza della CommessaA oppure il viceversa?
>Grazie mille!!
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Angel_Dark75
Profilo
| Newbie
8
messaggi | Data Invio:
gio 6 nov 2008 - 12:23
Con RDBMS pensavo che mi chiedessi il tipo di relazione delle tabelle (1-1, 1-N...)
Il risultato è quello che io volevo e cioè ottenere tutte le Commesse indipendentemente da Ordini, ma non so se è corretto perchè adesso DB contiene pochi dati, ma già nel giro di un mese aumenteranno e non vorrei ritrovarmi il server piantato per una query... (rischio la sodomizzazione
)
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 6 nov 2008 - 14:59
>Il risultato è quello che io volevo e cioè ottenere tutte le
>Commesse indipendentemente da Ordini, ma non so se è corretto
>perchè adesso DB contiene pochi dati, ma già nel giro di un mese
>aumenteranno e non vorrei ritrovarmi il server piantato per una
>query... (rischio la sodomizzazione
)
Sintatticamente la LEFT JOIN fatta così è corretta, logicamente pure.
Per quanto riguarda le prestazioni, il discorso è diverso. Hai indicizzato le tabelle? Se sì, quali hai fatto? Su che campi?
Quali altri accessi e tipi di accesso possono essere fatti su quelle tabelle?
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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 !