Вопрос : Находящ множественные спички внутри соединяют и также иметь показатели «внучат» в 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, FirstTableAltKeyY, FirstTableAltKeyZ}
there могут быть 1 или больше значение внутри {SecondTableAltKeyX, SecondTableAltKeyY, SecondTableAltKeyZ}. Это будет ключ condition.

I хотел было бы выбрать только показатели от tblFirsttable когда вышеуказанное ключевое состояние удовлетворенный и также если будут показатель ребенка для tblSecondTable в tblThirdTable.

Example:, то
tblFirstTable
1, «AA», «BBBBBB», «CC», «DDDDDD», «e», «FF», «GGGGGG», «br/>2 H'<, «@@», «######», «$$», «%%%%%%», «^», «&&»,» ', «("
3 ******, «QQ», «WWWWWW», «EE», «RRRRRR», «t», «YY», «UUUUUU», «br/>
tblSecondTable
10 I'<, «AA», «BBBBBB»,«II», «JJJJJJ», «k», datetime, John
11, «AA», «BBBBBB», будет», «MMMMMM», «n», datetime, Mary
12, «AA», «BBBBBB», «OO», «PPPPPP», «q», datetime, Joe
13, «@@», «######», "))», «------», «=», datetime, Jim
14, «@@», «######», «~~», «!!! !!! », «; », datetime, Jack
15, «QQ», «WWWWWW», «AA», «SSSSSS», '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 - консультации тренировки?
  •  
    programming4us programming4us