Desktop
Website
Multimedia
Database
Security
Enterprise
Questione : Trovando i fiammiferi multipli dentro si uniscono ed anche avere annotazioni “del nipote„ nello t-SQL
considerare queste 3 tabelle: tblFirstTable
(
FirstTablePK int non nullo,
FirstTableKeyA VARCHAR (2) non posizione di segnale minimo,
FirstTableKeyB VARCHAR (6) non posizione di segnale minimo,
FirstTableAltKeyA VARCHAR (2) non posizione di segnale minimo,
FirstTableAltKeyB VARCHAR (6) non posizione di segnale minimo,
FirstTableAltKeyC VARCHAR (1) non posizione di segnale minimo,
FirstTableAltKeyX VARCHAR (2) non posizione di segnale minimo,
FirstTableAltKeyY VARCHAR (6) non posizione di segnale minimo, tblSecondTable
(
SecondTablePK int non nullo,
SecondTableKeyA VARCHAR (2) non posizione di segnale minimo,
SecondTableKeyB VARCHAR (6) non posizione di segnale minimo della tabella del
create della tabella del
create del
FirstTableAltKeyZ VARCHAR (1) non posizione di segnale minimo,
), il
The del tblThirdTable
(
ThirdTablePK int non nullo,
SecondTableFK int non nullo, null
della tabella del
create del
SecondTableAltKeyX VARCHAR (2) non posizione di segnale minimo,
SecondTableAltKeyY VARCHAR (6) non posizione di segnale minimo,
SecondTableAltKeyZ VARCHAR (1) non posizione di segnale minimo, DATETIME del
Update_When non nullo,
Update_By VARCHAR (50) nulli,
) del
AgentName VARCHAR (20) non) si unisce fra tblFirstTable e tblSecondTable è il on
FirstTableKeyA = SecondTableKeyA E il =SecondTableKeyB
For di FirstTableKeyB tutto di questi si unisce, per l'ogni i valori corrispondenti {FirstTableAltKeyX, FirstTa
bleAltKeyY
, FirstTabl
eAltKeyZ} di
there può essere 1 o più valore dentro {SecondTableAltKeyX, Second
TableAltKe
yY, SecondT
ableAltKey
Z}. Ciò è la chiave condition.
I vorrebbe selezionare soltanto le annotazioni a partire da tblFirsttable quando lo stato chiave di cui sopra è satisfied ed anche se ci è annotazione del bambino per tblSecondTable in tblThirdTable.
Example:
tblFirstTable
1, “aa„, “BBBBBB„, “cc„, “DDDD
DD„, “E„, “F
F„, “GGGGGG
„, “Br/>2 del H'<, “@@„, “######„, “$$„, “%%%%
%%„, “^„, “&
&„,„
', “("
3 del ******, “QQ„, “WWWWWW„, “l'EE„, “RRRR
RR„, “T„, “Y
Y„, “UUUUUU
„, “Br/>
tblSecondTable
10 del I'<, “aa„, “BBBBBB„,“II„, “JJJ
JJJ„, “K„, il d
atetime, Jo
hn
11, “aa„, “BBBBBB„,„, “MMM
MMM„, “la N„, il d
atetime, Ma
ry
12, “aa„, “BBBBBB„, “OO„, “PPP
PPP„, “la Q„, il d
atetime, Jo
e
13, “@@„, “######„, "))„, “---
---„, “=„, d
atetime, Ji
m
14, “@@„, “######„, “~~„, “!!!
!!! „, “; „, d
atetime, Ja
ck
15, “QQ„, “WWWWWW„, “aa„, “SSS
SSS„, 'Br/>
tblThirdTable
20,11 del D'<, 'Br/>21,12 del Racques'< di Miriam, 'Br/>22,15 del Portes'< di Roger, 'Br/>
*For “aa„ del Penguert'< di Mike, “BBBBBB„ in tblFirstTable, abbiamo annotazioni in tblSecondTable inoltre, 3 di loro. Così abbiamo fiammiferi multipli. Ciò è test di verifica #1. Ed almeno uno di loro ha un'annotazione del bambino in tblThirdTable. Quindi entrambe le circostanze soddisfanno e vorremmo portare l'annotazione in tblFirstTable nel query.
*For “@@„, “######„ in tblFirstTable, noi abbiamo annotazioni in tblSecondTable inoltre, 2 di loro. Così abbiamo fiammiferi multipli. Ciò è test di verifica #1. Ma nessun di loro hanno annotazioni del bambino in tblThirdTable; perché i secondi test di verifica viene a mancare, non dobbiamo portare la fila da tblFirstTable.
*For “QQ„, “WWWWWW„ in tblFirstTable, noi abbiamo soltanto un fiammifero in tblSecondTable (nessun fiammiferi di multiplo). Anche se questo ha un'annotazione del bambino (i secondi test di verifica è satisfied), perché i primi test di verifica non è satisfied, non porteremo la fila da tblFirstTable nel query.
how voi svilupperemmo il risultato voluto nel codice t-SQL?.
thank you
class= del
Risposta : Trovando i fiammiferi multipli dentro si uniscono ed anche avere annotazioni “del nipote„ nello t-SQL
Bene, possono essere alcune strategie come potete vedere dal di cui sopra…
I rapporti di fondo sono resolved using una base di (se avessimo bisogno di tutti i particolari):
selezionare T1.*, T2.*, T3.*
dal T1 tblFirstTable
interno unire il T2 tblSecondTable su T1.FirstTableKeyA = T2.SecondTableKeyA E T1.FirstTableKeyB =T2.SecondTableKeyB
interno unire il T3 tblThirdTable su T2.SecondTablePK = T3.SecondTableFK
-- Visto che ci sono i PK e le FK ammettiamo l'indirizzamento adatto su quelli.
-- Così, ragionevole per ammettere indirizzamento sulle colonne di TableKeyB e di TableKeyA in loro rispettive tabelle pure.
-- Quale significa che possiamo essere ragionevolmente felici using si unisce.
-- Ma realmente abbiamo bisogno soltanto dei contatori… Non particolari…
FirstTablePK prescelto come FPK, conteggio (secondTablePK) come T2_count, conteggio (thirdTablePK) come T3_count
dal T1 tblFirstTable
interno unire il T2 tblSecondTable su T1.FirstTableKeyA = T2.SecondTableKeyA E T1.FirstTableKeyB =T2.SecondTableKeyB
interno unire il T3 tblThirdTable su T2.SecondTablePK = T3.SecondTableFK
gruppo da FirstTablePK
avendo conteggio (secondTablePK) > 1
-- Nota, non dobbiamo contare T3_count realmente, perché l'interni si uniscono risolveranno l'esistenza almeno di 1 voce in tblThirdTable
-- e realmente, non dobbiamo selezionare T2_count perché avere clausola ci fa quel conteggio per
-- Ma facciamo abbiamo bisogno dei particolari, così, dobbiamo ottenere indietro i dati tblFirstTable.
selezionare *
da (selezionare FirstTablePK come FPK
dal T1 tblFirstTable
interno unire il T2 tblSecondTable su T1.FirstTableKeyA = T2.SecondTableKeyA E T1.FirstTableKeyB =T2.SecondTableKeyB
interno unire il T3 tblThirdTable su T2.SecondTablePK = T3.SecondTableFK
gruppo da FirstTablePK
avendo conteggio (secondTablePK) > 1) s
interno unire tblFirstTable su FPK = FirstTablePK
-- ora, abbiamo una sottointerrogazione per il nostro contatore e selezioniamo indietro il tblFirstTable
-- così, realmente possiamo spaccare fuori gli elementi di quella sottointerrogazione in modo da ci riferiamo soltanto una volta alle tabelle se possibile
-- e perché è un contatore semplice, possiamo realmente avere quella parte come la sottointerrogazione soltanto.
selezionare *
dal T1 tblFirstTable
Dove 1 <�> da T2 tblSecondTable
interno unire il T3 tblThirdTable su T2.SecondTablePK = T3.SecondTableFK
dove T1.FirstTableKeyA = T2.SecondTableKeyA E T1.FirstTableKeyB =T2.SecondTableKeyB)
-- ci potrebbero essere sensi supplementari esplorare, ma pensare che desse la migliore prestazione e le discussioni/punti usati per ottenere a quel punto:)
Altre soluzioni
Sysprepping Windows 7 pc
Ciclaggio complesso di domanda di Coldfusion
SPContext.Current sta restituendo la posizione di segnale minimo nell'alimentatore di evento “di SPItemEventReceiver„.
IL CSS che IL MIME errato scriv dentro Firefox a macchina su Apache, il testo/css .css di AddType è là
MAcbook pro rifiuta di collegarsi via Ethernet ma impianti via il wifi
Cliente del Java applet - Eccezione di sicurezza
Mostrare tutte le annotazioni nella domanda se niente selezionato in Listbox - la parte II
Mouseover su div.a cambia la disposizione di div.b (CSS puro)
Azionamento duro PowerEdge guast 1850 di incursione 1
asp - La risorsa non ha potuto essere trovata