11 messaggi dal 22 gennaio 2014
Salve a tutti,
ho un problema che spero qualcuno possa risolvere, ne sarei proprio grato.In pratica ho necessita di unire due query cioe il risultato della prima (con condizione where) deve relazionarsi con la seconda atraverso una join il tutto in una solo query.

grazie anticipatamente.
Prova a descrivere concreatamente il modello del db (tabelle, campi) ovvero il minimo necessario per poter indirizzarti.

Ormai programmano tutti... ma la professionalità appartiene a pochi
11 messaggi dal 22 gennaio 2014
ciao,
grazie della disponibilita' cercero' di essere piu' chiaro possibile in pratica mi serve una query che mi estragga l'elenco del materiale della tabella1 che manca al singolo personaggio della tabella2.

tabella1
[denominazione_materiali]/[cod_fis]
cappello
camicia
scarpe
sciarpa
tabella2
[denominazione_materiali]/[cod_fis]
cappello/aaaaaaa
camicia/aaaaaaa
sciarpa/aaaaaaa
cappello/bbbbbbb
scarpe /bbbbbbb
camicia /bbbbbbb

ti invio di seguito il codice della query che sto' usando (senza corrispondenza) ma che non va bene perche' mi analizza sempre l'itera colonna della tabella2 senza filtrare il personaggio.
SELECT tabella1.DENOMINAZIONE_MATERIALI, tabella2.COD_FIS
FROM tabella1 LEFT JOIN tabella2ON tabella1.[DENOMINAZIONE_MATERIALI] = tabella2.[DENOMINAZIONE_MATERIALI]
WHERE (((tabella2.DENOMINAZIONE_MATERIALI) Is Null) AND ((tabella2.COD_FIS)=?));
grazie ancora spero di essere stato chiaro.
ciao
Modificato da adolf il 12 febbraio 2015 23.17 -
Sicuramente nel forum di Sql Server ci sono persone che ti risponderanno più dettagliatamente. Comunque quello che stai facendo restituisce i materiali che non sono associati ad alcun codice fiscale. Nel momento in cui un materiale è associato a un codice fiscale e tu aggiungi il where nella query non ottieni quello che vuoi. Da profano suggerirei:
select * 
from table1 
where table1.id not in(SELECT        table1.id
FROM       table1
left  JOIN  table2 ON table1.ID = table2.idmat
WHERE        (table2 .codfisc = 'bbb') )

con
CREATE TABLE [dbo].[table1](
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [descr] [nvarchar](50) NULL,
 CONSTRAINT [PK_table1] 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]
GO
CREATE TABLE [dbo].[table2](
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [idmat] [nvarchar](50) NULL,
  [codfisc] [nvarchar](50) NULL,
 CONSTRAINT [PK_table2] 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]

Ormai programmano tutti... ma la professionalità appartiene a pochi
11 messaggi dal 22 gennaio 2014
Sei GRANDE funziona e' solo un po' lento nell'esecuzione della query. Grazie infinite
175 messaggi dal 02 gennaio 2012
Hi,

per migliorare i tempi di risposta potresti creare 3 indici

INDEX1 su table1.ID
INDEX2 su table2.idmat
INDEX3 su table2.codfisc

bye ghg
11 messaggi dal 22 gennaio 2014
Grazie, appena posso provo.
Modificato da adolf il 16 febbraio 2015 22.23 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.