without returning redundant information
?Если вы имеете в виду, не повторяя детали курса, то нет - не просто в одном запросе. Есть несколько ужасных запросов (с точки зрения как идеи, так и кода) , чтобы вернуть следующее: , но я бы не советовал исследовать его.
ixCourse, enType .. , ixItem, sDescription
1 1 1 first for course 1
2 Second for course 1 << notice no course details
2 1 3 first for course #2
Но обычная практика - это СОЕДИНЯТЬСЯ между двумя, производя
ixCourse, enType .. , ixItem, sDescription
1 1 1 first for course 1
1 1 2 Second for course 1 << course details repeated per item
2 1 3 first for course #2
Запрос на такой запрос будет
select c.*, i.*
from course c
left join item i on c.ixCourse = i.ixCourse
Здесь я использовал LEFT JOIN
, который мог бы это произвести (например,2 не имеет элементов)
ixCourse, enType .. , ixItem, sDescription
1 1 1 first for course 1
1 2 Second for course 1 << course details repeated
2 1 NULL NULL << nothing for item columns
3 1 4 first for course #3
Изменение его на INNER JOIN
(или сокращение JOIN
) удалит курсы, которые не имеют описания.