#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