Desktop
Website
Multimedia
Database
Security
Enterprise
Pytanie : Znalezienie wieloskładnikowy dopasowanie wewnątrz łączyć i także mieć "wnuk" rejestr w t-SQL
rozważać te 3 stół:
create stołowy tblFirstTable
(
FirstTablePK int nieobowiązujący,
FirstTableKeyA VARCHAR (2) nie null,
FirstTableKeyB VARCHAR (6) nie null,
FirstTableAltKeyA VARCHAR (2) nie null,
FirstTableAltKeyB VARCHAR (6) nie null,
FirstTableAltKeyC VARCHAR (1) nie null,
FirstTableAltKeyX VARCHAR (2) nie null,
FirstTableAltKeyY VARCHAR (6) nie null,
FirstTableAltKeyZ VARCHAR (1) nie null,
)
create stołowy tblSecondTable
(
SecondTablePK int nieobowiązujący,
SecondTableKeyA VARCHAR (2) nie null,
SecondTableKeyB VARCHAR (6) nie null,
SecondTableAltKeyX VARCHAR (2) nie null,
SecondTableAltKeyY VARCHAR (6) nie null,
SecondTableAltKeyZ VARCHAR (1) nie null,
Update_When DATETIME nieobowiązujący,
Update_By VARCHAR (50) nieobowiązujący,
)
create stołowy tblThirdTable
(
ThirdTablePK int nieobowiązujący,
SecondTableFK int nieobowiązujący,
AgentName VARCHAR (20) nie null
)
The łączyć między tblFirstTable i tblSecondTable być on
FirstTableKeyA = SecondTableKeyA I FirstTableKeyB =SecondTableKeyB
For tblFirstTable tblFirstTable łączyć, dla each wartość {FirstTableAltKeyX, FirstTa
bleAltKeyY
, FirstTabl
eAltKeyZ}
there móc (1) lub więcej wartość wewnątrz {SecondTableAltKeyX, Second
TableAltKe
yY, SecondT
ableAltKey
Z}. />Example być the klucz condition.
I polubić tylko rejestr od tblFirsttable gdy the tblFirsttable kluczowy warunek satysfakcjonować i także jeżeli tam być dziecko rejestr dla tblSecondTable w tblThirdTable.
Example:
tblFirstTable
1, "AA", "BBBBBB", "CC", "DDDD
DD", "E", "F
F", "GGGGGG
", "H'< br/>2, "@@", "######", "$$", "%%%%
%%", "^", "&
&"," ******
', "("
3, "QQ", "WWWWWW", "EE", "RRRR
RR", "T", "Y
Y", "UUUUUU
", "I'< br/>
tblSecondTable
10, "AA", "BBBBBB","II", "JJJ
JJJ", "K", d
atetime, Jo
hn
11, "AA", "BBBBBB",", "MMM
MMM", "N", d
atetime, Ma
ry
12, "AA", "BBBBBB", "OO", "PPP
PPP", "Q", d
atetime, Jo
e
13, "@@", "######", "))", "---
---", "=", d
atetime, Ji
m
14, "@@", "######", "~~", "!!!
!!! ", "; ", d
atetime, Ja
ck
15, "QQ", "WWWWWW", "AA", "SSS
SSS", 'D'< br/>
tblThirdTable
20,11, 'Miriam Racques'< br/>21,12, 'Roger Portes'< br/>22,15, 'Mike Penguert'< br/>
*For "AA", "BBBBBB" w tblFirstTable, my mieć rejestr w tblSecondTable także, 3. W Ten Sposób my mieć wieloskładnikowy dopasowanie. #1. być kryterium #1. I przynajmniej jeden mieć dziecko rejestr w tblThirdTable. Hence oba warunek satysfakcjonować, i my polubić the rejestr w tblFirstTable w the query.
*For "@@", "######" w tblFirstTable, my mieć rejestr w tblSecondTable także, 2. W Ten Sposób my mieć wieloskładnikowy dopasowanie. #1. być kryterium #1. Ale rejestr mieć dziecko rejestr w tblThirdTable; ponieważ drugi kryterium nie udać się, my musieć the rząd od tblFirstTable.
*For "QQ", "WWWWWW" w tblFirstTable, my mieć tylko jeden dopasowanie w tblSecondTable (żadny wielokrotność dopasowanie). Nawet jeśli kod mieć dziecko rejestr (drugi kryterium satysfakcjonować), ponieważ the pierwszy kryterium satysfakcjonować, my przynosić the rząd od tblFirstTable w the query.
how ty budować the rezultat pragnąć w t-SQL kod?.
thank you
Odpowiedź : Znalezienie wieloskładnikowy dopasowanie wewnątrz łączyć i także mieć "wnuk" rejestr w t-SQL
Dobrze, móc dobrze strategia gdy ty móc od above…
The zasadniczy związek rozwiązywać using baza (jeżeli my potrzebować wszystkie szczegół):
wybrany T1.*, T2.*, T3.*
od tblFirstTable T1
wewnętrzny łączyć tblSecondTable T2 na T1.FirstTableKeyA = T2.SecondTableKeyA I T1.FirstTableKeyB =T2.SecondTableKeyB
wewnętrzny łączyć tblThirdTable T3 na T2.SecondTablePK = T3.SecondTableFK
-- Zważywaszy Na tam być PK i FK my zakładać odpowiedni indexing na zważywaszy na.
-- W Ten Sposób, rozsądny indexing na the TableKeyA i TableKeyB kolumna w ich poszczególny stół także.
-- Który sposób że my móc rozsądnie szczęśliwy łączyć.
-- Ale my tylko naprawdę potrzebować kontuar… Nie szczegół…
wybrany FirstTablePK jako FPK, obliczenie (secondTablePK) jako T2_count, obliczenie (thirdTablePK) jako T3_count
od tblFirstTable T1
wewnętrzny łączyć tblSecondTable T2 na T1.FirstTableKeyA = T2.SecondTableKeyA I T1.FirstTableKeyB =T2.SecondTableKeyB
wewnętrzny łączyć tblThirdTable T3 na T2.SecondTablePK = T3.SecondTableFK
grupa FirstTablePK
mieć obliczenie (secondTablePK) > (1)
-- Notatka, my musieć T3_count naprawdę, ponieważ the wewnętrzny łączyć rozwiązywać the istnienie przynajmniej (1) wejście w tblThirdTable
-- i naprawdę, my musieć T2_count ponieważ the Klauzula robić ten obliczenie dla
-- Ale my potrzebować szczegół, w ten sposób, musieć z powrotem the tblFirstTable dane.
wybiórka *
od (wybrany FirstTablePK jako FPK
od tblFirstTable T1
wewnętrzny łączyć tblSecondTable T2 na T1.FirstTableKeyA = T2.SecondTableKeyA I T1.FirstTableKeyB =T2.SecondTableKeyB
wewnętrzny łączyć tblThirdTable T3 na T2.SecondTablePK = T3.SecondTableFK
grupa FirstTablePK
mieć obliczenie (secondTablePK) > 1) s
wewnętrzny łączyć tblFirstTable na FPK = FirstTablePK
-- teraz, my mieć subquery dla nasz kontuar i wybierać z powrotem the tblFirstTable
-- w ten sposób, naprawdę my móc naprawdę element ten subquery w ten sposób my tylko odnosić sie stół tylko jeżeli ewentualny
-- i ponieważ ono być prosty kontuar, my móc właściwie ten część jako the subquery tylko.
wybiórka *
od tblFirstTable T1
Dokąd (1) <�> od tblSecondTable T2
wewnętrzny łączyć tblThirdTable T3 na T2.SecondTablePK = T3.SecondTableFK
dokąd T1.FirstTableKeyA = T2.SecondTableKeyA I T1.FirstTableKeyB =T2.SecondTableKeyB)
--
Inne rozwiązania
SUP7203B PFC niekompatybilność
system przywrócić punkt
IE8 Przedkładać Forma z [Wchodzić Do] Klucz, stosownie
zintegrowany wordpress w miejsce. blog pic doczepianie.
Łączyć XenServer wśród iPhone
Porzucony Windows 7 Instalacyjny odpowiedź kartoteka
SSH konsola: iść precyzować falcówka po nazwa użytkownika
Tworzyć Linux przygotowywać CD-R stylowy but dysk…
Dlaczego Sysinternals Wirusowy wyszukiwarka redirect?
MS Dojazdowy SQL Podział Dojazdowy obejście potrzebować