реляционная алгебра к SQL - PullRequest
0 голосов
/ 13 декабря 2011

Имея эту схему:

Doctor(license_no, doctor_name, specialty)

Patient(pat_id, pat_name, pat_address, pat_phone, date_of_birth)

Visit(license_no, pat_id, date_of_visit, type, diagnosis, charge) 

Мне нужно перевести Patient (join sign) pat_id(date>=1-1-2005^ date<1-1-2006(Visit)), и я подумал, что это означает отбор пациентов, которые посещали врача в период с 01.01.2005 по 01.01.2006, поэтому я сделалэтот запрос:

SELECT p.pat_ID FROM Patient p INNER JOIN Visit v 
ON (p.pat_ID = v.pat_ID)
WHERE date_of_visit <= '01-01-2005' AND date_of_visit < '01-01-2006'

Означает ли выражение реляционной алгебры то, что я думал, и SQL-запрос возвращает правильный результат?

1 Ответ

1 голос
/ 13 декабря 2011

При указании диапазона дат для условия WHERE вы используете правильный синтаксис, но ваш первый оператор выглядит неправильно. (>= не <=).

Если вам нужно выбрать записи между двумя датами, включая дату начала, но исключая дату окончания (известную как закрытое открытое представление), синтаксис должен быть следующим:

...
WHERE date_of_visit >= date_start AND date_of_visit < date_end

Если вам нужно выбрать записи между двумя датами , исключая эти даты, синтаксис должен быть следующим:

...
WHERE date_of_visit > date_start AND date_of_visit < date_end

Если вы хотите выбрать записи между двумя датами , включая эти даты, вы должны использовать:

...
WHERE date_of_visit >= date_start AND date_of_visit <= date_end

Операторы «больше» и «равно» позволяют вам указать, хотите ли вы, чтобы диапазон дат был включительно граничных дат или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...