Основной вопрос присоединения SQL. Можете ли вы помочь мне улучшить мои навыки? - PullRequest
0 голосов
/ 13 ноября 2009

Хорошо. Итак, я пытаюсь улучшить свои навыки SQL и задать вопрос. Вот снимок экрана схемы.

Схема http://img509.imageshack.us/img509/97/screenhunter02nov121946.gif
(http://img509.imageshack.us/img509/97/screenhunter02nov121946.gif)

Хорошо, поэтому я выбираю наборы отчетов и другие строки из таблицы, которую вы можете видеть. У меня есть эти две таблицы, соединяющие правильно и показывающие, что должно быть возвращено. Теперь мне нужно добавить еще одно поле в мои строки результатов, в котором указано, какой это тип отчета. Как я могу присоединиться к таблице ReportGroupType через таблицу ReportBundleGroup, не получив при этом результата?

Вот запрос, который я использую до сих пор.

SELECT * FROM ReportBundleCustomerVisibility INNER JOIN ReportBundle ON ReportBundleCustomerVisibility.ReportBundleID = ReportBundle.ID WHERE ReportBundleCustomerVisibility.ReferenceCustomerID = 2303

Еще раз спасибо, SO

Ответы [ 2 ]

1 голос
/ 13 ноября 2009
SELECT * 
  FROM ReportBundleCustomerVisibility AS v
    JOIN ReportBundle AS b ON b.ID = v.ReportBundleID
    JOIN ReportBundleGroup AS g ON b.ID = g.ReportBundleID
    JOIN ReportGroupTYpe AS t ON t.ID = g.ReportGroupTypeID
WHERE v.ReferenceCustomerID = 2303
0 голосов
/ 13 ноября 2009

Похоже, вам просто нужно еще одно внутреннее объединение, чтобы получить необходимую информацию. Вы можете думать о втором соединении как о соединении результата объединения с таблицей ReportGroupType. Я добавил скобки, чтобы попытаться объединить два набора, над которыми работает второй INNER JOIN.

SELECT * FROM ((ReportBundleCustomerVisibility 
    INNER JOIN ReportBundle ON ReportBundleCustomerVisibility.ReportBundleID = ReportBundle.ID) 
    INNER JOIN ReportGroupType ON ReportBundleGroup.ReportGroupTypeID = ReportGroupType.ID)
    WHERE ReportBundleCustomerVisibility.ReferenceCustomerID = 2303

Я также настоятельно рекомендую не использовать «SELECT *» в производственном коде или любой запрос, который вы планируете использовать повторно, поскольку схема таблицы может измениться и, возможно, повлиять на отчеты и пользовательский интерфейс. Вместо этого явно укажите столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...