Таблица Посещений;mysql complex select query из нескольких таблиц
поля [идентификатор, patient_id (Ф.К.), doctor_id (Ф.К.), флаг (Xfk), тип (Xfk), time_booked, дата, ...]
Xfk = отнести его к другой таблице, но ее не обязательно существовать, поэтому я не использую ограничение.
SELECT `v`.`date`, `v`.`time_booked`, `v`.`stats`, `p`.`name` as pt_name,
`d`.`name` as dr_name, `f`.`name` as flag_name, `f`.`color` as flag_color,
`vt`.`name` as type, `vt`.`color` as type_color
FROM (`visits` v, `users` p, `users` d, `flags` f, `visit_types` vt)
WHERE `p`.`id`=`v`.`patient_id`
AND `d`.`id`=`v`.`doctor_id`
AND `v`.`flag`=`f`.`id`
AND `v`.`type`=`vt`.`id`
AND `v`.`date` >= '2013-02-27'
AND (v.date <= DATE_ADD('2013-02-27', INTERVAL 7 DAY))
AND (`v`.`doctor_id`='00002' OR `v`.`doctor_id`='00001')
ORDER BY `v`.`date` ASC, `v`.`time_booked` ASC;
Один большой статуэтка у меня есть! мой вопрос есть,
1: следует ли мне использовать объединение вместо нескольких таблиц? , и если я должен почему?
это время выполнения запроса составляет 0,0009, поэтому я считаю, что это нормально, и поскольку я получаю все свои данные в одном запросе или это плохая практика?
2: в части выбора я хочу сказать
если v.type = 0 select f.name,f.color
еще я не хочу, чтобы выбрать их nither там таблицы flags f
это возможно!?
также в настоящее время, если флаг не найден, он реплицирует все строки столько, сколько имеет таблица флагов в строках! есть ли способ, которым я могу это предотвратить? как для флага, так и таблицы visit_types?