Desktop
Website
Multimedia
Database
Security
Enterprise
Вопрос : Находящ множественные спички внутри соединяют и также иметь показатели «внучат» в t-SQL
рассматривайте эти 3 таблицы: tblFirstTable
таблицы
create (
FirstTablePK int нулевое,
FirstTableKeyA VARCHAR (2) не null,
FirstTableKeyB VARCHAR (6) не null,
FirstTableAltKeyA VARCHAR (2) не null,
FirstTableAltKeyB VARCHAR (6) не null,
FirstTableAltKeyC VARCHAR (1) не null,
FirstTableAltKeyX VARCHAR (2) не null,
FirstTableAltKeyY VARCHAR (6) не null, tblSecondTable
таблицы
create
FirstTableAltKeyZ VARCHAR (1) не null,
) (
SecondTablePK int нулевое,
SecondTableKeyA VARCHAR (2) не null,
SecondTableKeyB VARCHAR (6) не null,
The tblThirdTable
таблицы
create
SecondTableAltKeyX VARCHAR (2) не null,
SecondTableAltKeyY VARCHAR (6) не null,
SecondTableAltKeyZ VARCHAR (1) не null, DATETIME
Update_When нулевого,
Update_By VARCHAR (50) нулевых,
) (
ThirdTablePK int нулевого,
SecondTableFK int нулевого, null
AgentName VARCHAR (20) не) соединяет между tblFirstTable и tblSecondTable on
FirstTableKeyA = SecondTableKeyA И =SecondTableKeyB
For FirstTableKeyB каждое из этих соединяет, для каждого соответствуя значения {FirstTableAltKeyX, FirstTa
bleAltKeyY
, FirstTabl
eAltKeyZ}
there могут быть 1 или больше значение внутри {SecondTableAltKeyX, Second
TableAltKe
yY, SecondT
ableAltKey
Z}. Это будет ключ condition.
I хотел было бы выбрать только показатели от tblFirsttable когда вышеуказанное ключевое состояние удовлетворенный и также если будут показатель ребенка для tblSecondTable в tblThirdTable.
Example:, то
tblFirstTable
1, «AA», «BBBBBB», «CC», «DDDD
DD», «e», «F
F», «GGGGGG
», «br/>2 H'<, «@@», «######», «$$», «%%%%
%%», «^», «&
&»,»
', «("
3 ******, «QQ», «WWWWWW», «EE», «RRRR
RR», «t», «Y
Y», «UUUUUU
», «br/>
tblSecondTable
10 I'<, «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», 'br/>
tblThirdTable
20,11 D'<, 'br/>21,12 Racques'< Мириам, 'br/>22,15 Portes'< Роджер, 'br/>
*For «AA» Penguert'< Майк, «BBBBBB» в tblFirstTable, мы имеем показатели в tblSecondTable также, 3 из их. Так мы имеем множественные спички. Это будет критерии #1. И хотя бы одно из их имеет показатель ребенка в tblThirdTable. Следовательно оба условия удовлетворяют, и мы хотел были бы принести показатель в tblFirstTable в query.
*For «@@», «######» в tblFirstTable, мы имеем показатели в tblSecondTable также, 2 из их. Так мы имеем множественные спички. Это будет критерии #1. Но никакие из их имеют показатели ребенка в tblThirdTable; потому что вторые критерии терпят неудачу, мы не должны принести рядок от tblFirstTable.
*For «QQ», «WWWWWW» в tblFirstTable, мы имеем только одну спичку в tblSecondTable (отсутствие спичек многократной цепи). Даже если это имеет показатель ребенка (вторые критерии удовлетворенный), потому что первые критерии не удовлетворенный, мы не принесем рядок от tblFirstTable в query.
how вы построили бы пожеланный результат в Кодем t-SQL?.
thank you
class=
Ответ : Находящ множественные спички внутри соединяют и также иметь показатели «внучат» в t-SQL
Наилучшим образом, могут быть немного стратегий по мере того как вы можете увидеть от вышеуказанного…
Основные отношения resolved using основание (если нам было нужно все тонкости):, то
выберите T1.*, T2.*, T3.*
от tblFirstTable T1
внутренне соедините tblSecondTable T2 на T1.FirstTableKeyA = T2.SecondTableKeyA И T1.FirstTableKeyB =T2.SecondTableKeyB
внутренне соедините tblThirdTable T3 на T2.SecondTablePK = T3.SecondTableFK
-- Учитывая будут PK и FK мы принимаем соотвествующее индицирование на тех.
-- Так, разумно для того чтобы принять индицирование на колонках TableKeyA и TableKeyB в их соответственно таблицах также.
-- Намеревается что мы можем быть разумно счастливы using соединяет.
-- Но нам только реально нужны счетчики… Не детали…
отборное FirstTablePK как FPK, отсчет (secondTablePK) как T2_count, отсчет (thirdTablePK) как T3_count
от tblFirstTable T1
внутренне соедините tblSecondTable T2 на T1.FirstTableKeyA = T2.SecondTableKeyA И T1.FirstTableKeyB =T2.SecondTableKeyB
внутренне соедините tblThirdTable T3 на T2.SecondTablePK = T3.SecondTableFK
группа FirstTablePK
имеющ отсчет (secondTablePK) > 1
-- Примечание, мы не должны подсчитать T3_count реально, потому что внутренние соединяют разрешат существование хотя бы 1 входа в tblThirdTable
-- и реально, мы не должны выбрать T2_count потому что иметь клаузулу делает тот отсчет для нас
-- Но нам делаем нужны детали, так, должны получить назад tblFirstTable данные.
выберите *
от (выберите FirstTablePK как FPK
от tblFirstTable T1
внутренне соедините tblSecondTable T2 на T1.FirstTableKeyA = T2.SecondTableKeyA И T1.FirstTableKeyB =T2.SecondTableKeyB
внутренне соедините tblThirdTable T3 на T2.SecondTablePK = T3.SecondTableFK
группа FirstTablePK
имеющ отсчет (secondTablePK) > 1) s
внутренне соедините tblFirstTable на FPK = FirstTablePK
-- теперь, мы имеем subquery для нашего счетчика и выбираем назад tblFirstTable
-- так, реально мы можем разделить вне элементы того subquery поэтому мы только ссылаемся к таблицам раз если по возможности
-- и потому что будет просто счетчиком, мы можем фактическ иметь ту часть как subquery только.
выберите *
от tblFirstTable T1
Где 1 <�> от tblSecondTable T2
внутренне соедините tblThirdTable T3 на T2.SecondTablePK = T3.SecondTableFK
где T1.FirstTableKeyA = T2.SecondTableKeyA И T1.FirstTableKeyB =T2.SecondTableKeyB)
-- могло быть дополнительные дороги исследовать, только подумать которое дает самое лучшее представление, и обдуманности/шаги используемые для того чтобы получить к тому пункту:)
Другие решения
Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
Шнур ошибки в блоке задвижки?
сколько вариант сервера SQL на одной машине
Внешний вид 2007 не может архивный файл открытой сети сохраненный
Активно директория DNS записывает вопрос
Отчет о доступа 2010 экспорта к CSV с коллекторами?
Прокладчик OCE 9400 не начинает
как добавить десятичное место в формуле в отчете о кристалла seagate
Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
VB6 к VS2010 - консультации тренировки?