Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/49: Рейтинг темы: голосов - 49, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 3
1

Сложный запрос? Поля из одной таблицы, и поля из другой таблицы, но...

25.06.2011, 22:58. Показов 9340. Ответов 2
Метки нет (Все метки)

Вот так мы делаем выборку из основной таблицы table1:
SELECT t1.ID, t1.f2, t1.f3
FROM table1 t1
WHERE (какой-то простой фильтр)

ID - естественно, autoinc, unique

В таблице table2 - записи типа log, то есть история каких-то действий с таблицей table1: поля ID, f5, datef6.
В этой таблице ID - это ID таблицы table1, записей для одного ID может быть сколько угодно - поскольку журнал.

Таблицы связаны по ID
Вот запрос к лог-таблице, чтобы добыть последнюю по дате запись, соответствующую ID из главной таблицы table1:

SELECT t2.ID, t2.f5, t2.datef6 FROM table2 t2 WHERE t2.ID=t1.ID ORDER BY t2.datef6 DESC LIMIT 1

Можно ли сделать один !быстрый! запрос, который выводил бы
строки из table1 и table2, примерно вот так:
SELECT t1.ID, t1.f2, t1.f3, t2.f5, t2.datef6,...
FROM table1 t1, table2 t2
...

То есть, каждая строка результата содержала бы поля из table1 и НЕСКОЛЬКО ПОЛЕЙ из table2, ИЗ ПОСЛЕДНЕЙ ПО ДАТЕ записи, связанной по ID с записью основной таблиы table1

Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2011, 22:58
Ответы с готовыми решениями:

Update поля таблицы из другой таблицы
Здравствуйте уважаемыйе форумчане! Есть следующая задача: Существуют 2 таблицы "Клиенты" и...

Триггер SUM (вычисляемого поля из другой таблицы) с JOIN-ом
В институте преподают курс SQL На лабораторной триггеры задали написать триггер. Есть таблицы...

Запрос на SQL. Вынести имя поля за пределы таблицы
Есть вот такой запрос. Он выдает среднюю оценку студентов в группе. Но получается так, что в...

Запрос, копирующий коэффициенты из таблицы с группами в соответствующие поля
Доброго времени суток) Помогите написать запрос, именно структуру запроса, типа пример как это...

__________________
2
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 3
27.06.2011, 02:25  [ТС] 2
Вот главная таблица table1:
id name
----------
1 name1
2 name2
3 name3

Вот таблица table2 - история каких-то действий с таблицей table1 (неважно каких, важно что они датированы),
при этом tid - это id из таблицы table1
tid eventdate action
-------------------------
1 2011-01-10 rename
1 2011-02-02 activate
1 2011-03-05 deactivate
2 2011-04-21 rename
3 2011-02-20 activate
3 2011-03-30 deactivate
2 2011-04-06 rename
1 2011-03-02 deactivate
2 2011-05-01 mark
3 2011-02-12 rename

Задача:
Вывести ТОЛЬКО самые последние по дате действия над записями table1, то есть результат в этом примере такой:
id name eventdate action
1 name1 2011-03-05 deactivate
2 name2 2011-05-01 mark
3 name3 2011-03-30 deactivate

Теперь, я надеюсь, задача более ясно описана.
0
36 / 36 / 3
Регистрация: 24.06.2011
Сообщений: 50
27.06.2011, 04:22 3
SQL
1
2
3
SELECT t1.id, name,log.date,log.action FROM t1 INNER JOIN (
SELECT id,DATE,action FROM t2 ORDER BY DATE DESC
) AS log ON t1.id = log.id GROUP BY t1.id
Запрос работает, но это явно не самый оптимальный вариант.
Если нужна производительность, может будет проще разбить задача на два запроса?
1. Выбрать id и названия из t1
2. Выбрать необходимые поля из t2 сортируя по дате и сокращая лимитом, уже зная количество строк из t1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2011, 04:22

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Переместить два столбца одной таблицы со строкой в поле другой таблицы
Доброго времени суток, добрый форумчанин. Возникла проблема следующего плана: Есть две таблицы:...

Обновление столбца одной таблицы из другого столбца другой таблицы (база одна)
Доброго времени суток! Очень нуждаюсь в помощи. Значит: 2 таблицы 1 - product,...

Использование двух записей одной таблицы в одной записи другой
Всем привет! Есть таблица "Application", в ней есть 2 поля, которые содержат: ID пользователя,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.