|
|
|
| Возникла пока не разрешимая для меня проблема - объединить 4 таблицы (можно и несколькими запросами - главное, понять, как вообще реализовать).
Итак, есть 4 таблицы:
users (id, name) - пользователи
objects (id, name) - объекты
object_history (id_object, datebegin, dateend, property1, propery2) - свойства объектов с ведением истории изменений
users_objects (id, id_object, id_user) - связи объектов с пользователями
Необходимо вывести все объекты (objects) с последними актуальными данными (object_history), ассоциированные с конкретным пользователем в таблице users_objects.
Буду рад любому совету или ссылке на полезную информацию по теме, потому что для меня сейчас главное понять, хотя и быстро реализовать было бы неплохо. | |
|
|
|
|
|
|
|
для: alexxspb
(09.03.2009 в 14:18)
| | Пока что сделал подсоединение таблицы объектов к связям с пользователем (без подсоединения таблицы истории данных, пока не удается). Вот мой запрос:
SELECT
obj.*, usr_obj.id AS id_rel
FROM
cp_objects AS obj
#, cp_object_history AS obj_hist
JOIN
cp_users_objects AS usr_obj ON usr_obj.id_object = obj.id
WHERE
usr_obj.id_user = 1
Закомментированая строка - при раскомментировании почему то не работает, хотя общих полей нет. Выдает ошибку: Unknown column 'obj.id' in 'on clause'. | |
|
|
|
|
|
|
|
для: alexxspb
(09.03.2009 в 14:51)
| | Сверившись с синтаксисом MySQL 5, изменил данный запрос так:
SELECT
obj.*, usr_obj.id AS id_rel, obj_hist.*
FROM
cp_objects AS obj
JOIN
(cp_users_objects AS usr_obj, cp_object_history AS obj_hist)
ON (usr_obj.id_object = obj.id AND obj_hist.id_object = obj.id)
WHERE
usr_obj.id_user = 1 AND obj_hist.dateend = '2146132800'
|
и все заработало как надо. | |
|
|
|