Хорошо, я нашел это. Можно использовать следующий запрос:
SELECT Courses.CourseId, Count(Users.UserId) AS UserCount FROM Users
INNER JOIN User_Course_Links UCL on Users.UserId = UCL.UserId
INNER JOIN Courses Courses on UCL.CourseId = Courses.CourseId
GROUP BY Courses.CourseId
Что приводит к
+----------+-----------+
| CourseId | UserCount |
+----------+-----------+
| Course 1 | 20 |
| Course 2 | 5 |
| Course 3 | 12 |
| ... | ... |
В качестве альтернативы можно использовать этот запрос:
SELECT Courses.CourseId, Count(Users.UserId) AS UserCount FROM Courses
LEFT OUTER JOIN User_Course_Links UCL on Courses.CourseId = UCL.CourseId
LEFT OUTER JOIN Users on UCL.UserId = Users.UserId
GROUP BY Courses.CourseId
Чтобы также включить курсы с нулевыми пользователями
Вы можете указать поля для каждой стороны (в таком порядке: слева, сверху, справа, снизу)
<Image Source="image.png" Margin="0,10,0,0"/>
Вы можете использовать поля и вертикальное выравнивание.
Например:
<Button Margin="0,200,0,0" VerticalAlignment="Top" />
В соответствующей заметке (хотя, вероятно, и не отвечая напрямую на ваш вопрос), вы также можете объявить FrameworkElement как ресурс , дай ему ключ, WPF Margin демистифицировано
Еще одно полезное сообщение в блоге о Margins, Padding, Borders and Content , отличное сообщение
свойство Margin - это то, что вы ищете. Есть 3 разных способа установить маржу. Первый (см. Ниже) устанавливает для всех полей одинаковое значение - оно расширяется до «0,0,0,0».
второй устанавливает левую и правую стороны на 1, а верхнюю и нижнюю стороны на 0 - он расширяется до «1,0,1,0». а третий устанавливает для каждой стороны индивидуальное значение (в данном случае 5).
Значения маржи в порядке: первое значение слева
второе значение - верхнее
третье значение - правая сторона
четвертое значение - bottom
Margin="5"; <!-- same as "5,5,5,5" -->
Margin="5,2" <!-- same as "5,2,5,2" -->
Margin="5,6,7,8" <!-- set left,top,right,bottom independantly -->