SQL Server : основные записи и отображение количества подробных записей для каждой

#sql #sql-server #asp.net-mvc

Вопрос:

У меня есть Master Detail таблица и, Detail ссылка на Master строку в ссылке FK.

Мне нужно отобразить все данные из Master таблицы и соответствующее количество деталей для каждой записи, т. е.

MASTER стол:

 ID Name  Age
-------------
1  John  15
2  Jane  14 
3  Joe   15
 

DETAIL стол:

 MasterID Subjects
---------------------
1        Trigonometry
1        Chemistry
1        Physics
1        History
2        Trigonometry
2        Physics
 

Таким образом, когда я выполнял эту инструкцию SQL, я получал следующий результат:

 ID   Name   Age  #Subjects
-----------------------------
1    John   15   Trignometry
1    John   15   Chemistry
1    John   15   Physics
1    John   15   History
2    Jane   14   Trignometry
2    Jane   14   Physics
 

Возможно ли это? Есть идеи?

Комментарии:

1. Подсказка: INNER JOIN .

2. разве это не умножило бы рекорды

3. . . (1) Это то, чего вы хотите. (2) Что случилось с Джейн/Физикой?

4. Кстати, кажется глупым хранить возраст в базе данных, так как он постоянно меняется, лучше хранить DOB и вычислять его по этому

Ответ №1:

Возможно LEFT JOIN , а-это то, что вы ищете

Пример

  Select A.*
       ,B.Subjects
  From  Master A
  Left Join Detail B on A.ID=B.MasterID
 

Результаты

 ID  Name    Age Subjects
1   John    15  Trigonometry
1   John    15  Chemistry
1   John    15  Physics
1   John    15  History
2   Jane    14  Trigonometry
2   Jane    14  Physics
3   Joe     15  NULL      -- <<<< Notice the NULL