Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объединение таблиц
 
 автор: alexxspb   (09.03.2009 в 14:18)   письмо автору
 
 

Возникла пока не разрешимая для меня проблема - объединить 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:51)   письмо автору
 
   для: 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 в 15:14)   письмо автору
 
   для: 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'


и все заработало как надо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования