Формула расстояния по большому кругу: T-SQL

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

Итак, пример моей таблицы: | id | Имя | + ---- + ------- + | 1 | Крис | | 2 | Джо | | 3 | Джек | + ---- + ------- + Зачисление + --------------- + ------------ + ----- ------ + ---...

Учитывая следующие таблицы:

Студент

+----+-------+
| id | Name  |
+----+-------+
| 1  | Chris |
| 2  | Joe   |
| 3  | Jack  |
+----+-------+

Зачисление

+---------------+------------+-----------+----------+
| enrollment_id | student_id | course_id | complete |
+---------------+------------+-----------+----------+
| 1             | 1          | 55        | true     |
| 2             | 1          | 66        | true     |
| 3             | 1          | 77        | true     |
| 4             | 2          | 55        | true     |
| 5             | 2          | 66        | false    |
| 6             | 3          | 55        | false    |
| 7             | 3          | 66        | true     |
+---------------+------------+-----------+----------+

Я бы хотел следующее

+----+-------+-----------+-----------+-----------+
| id | Name  | Course 55 | Course 66 | Course 77 |
+----+-------+-----------+-----------+-----------+
| 1  | Chris | true      | true      | true      |
| 2  | Joe   | true      | false     | NULL      |
| 3  | Jack  | false     | true      | NULL      |
+----+-------+-----------+-----------+-----------+

Примечание 1: Я знаю, что mysql может у меня нет динамических столбцов (поправьте меня, если я ошибаюсь!), поэтому я доволен запросом, начинающимся как:

SELECT id, name, course_55, course_66, course_77 etc...

Я доволен этим, потому что существует фиксированное количество курсов (4, если быть точным). В идеале Я бы хотел, чтобы он был динамичным; то есть не нужно вручную писать каждый курс в предложении SELECT.

Примечание 2: Для этого нужен mysql pure - я не хочу прибегать к PHP.

В настоящее время база данных насчитывает более 10000 студентов с 10000+ * 4 зачислениями (так как есть ровно 4 курса, и каждый студент проходит все 4 модуля).

Примечание 3: Student.user_id проиндексирован, как и enrollment.enrollment_id, enrollment.student_id и enrollment.course_id.

6
задан Jonathan Leffler 29 April 2011 в 00:19
поделиться