![]() |
|
Модераторы: skyboy |
![]()
|
|
| RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
Например у меня есть четыре таблицы:
Table1: id1, name. Table2: id2, id1 name. Table3: id3, id2, name. Table4: id4, id3, name. Вот такая вот структура. Точнее дерево. Нужно от туда достать все из таблицы Table1. Для каждого id1 из нее достать все из Table2. Для каждого id2 из нее достать общее количество записей из Table 3, + сумму общего количества соответствующих записей из Table4. Точнее что то типа этого:
Помогите пожалуйста сделать это оним запросом. Уже замучался. ВОБЩЕМ: Оптимизирую свой форум. Тоесть таблица table1 - это категории форумов. Таблица table2 - это форумы. Таблица table3 - это топики в форуме. Таблица table4 - это сообщения. Так вот надо на главной вывести все категории, форумы для каждой категории, общее количество топиков в форуме, общее количество сообщений в форуме. Это сообщение отредактировал(а) RomanK - 30.3.2006, 20:23 |
|||
|
||||
| RomanK |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
В принципе я эту задачу уже решил. Хотя может можно как-нибудь оптимизировать. Если можно подскажите как.
Вот SQL запрос:
Теперь в связи с этим еще вопрос. А как исправить этот запрос, чтобы он еще доставал последнюю запись в таблице table3? (ТОЧНЕЕ: достать последний топик для каждого форума) Пробовал вот так:
Но вылазит ошибка - типа нету такой таблицы t2. Думаю, что она происходит из того, что синонимы таблиц не фигурируют в подзапросах. Дак вот... как сие организовать? Это сообщение отредактировал(а) RomanK - 30.3.2006, 22:26 |
||||
|
|||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
RomanK, обычно все данные дерева пихаются в одну таблицу
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
DeadSoul, ну у меня как бы форум... и не хочется делать ОДНУ таблицу для него.
Вот я чувствую, что чуть-чуть что-то надо подправить/дописать и будет все работать. Только вот нехватает у меня знаний для этого. Поэтому прошу помоч. |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Тогда да. Просто в первоначальной постановке задачи все таблицы были равноправны. Форум плоский или древовидный? Для хранения всех подфорумом ИМХО стоит использовать одну таблицу, т.е. записи - Форум программистов - Разработка систем для Web - PHP - PHP: взаимодействие с Базами Данных живут внутри одной таблицы. Вторая таблица для постов -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
Честно говоря я не знаю такой терминологии. Ну просто. Есть категории, есть форумы в каждой категории, есть топики в форумах, есть сообщения в топиках. ПОДФОРУМОВ нету. То есть не как здесь. Типа вот так: Категория: WEB-программирование -> Форум: MySQL -> Топик: Помогите составить запрос. Думаю структура ясна? |
|||
|
||||
| madFobos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.12.2005 Репутация: нет Всего: 3 |
Если ID у тебя AutoIncrement (не пробовал, но предполагаю):
|
|||
|
||||
| jsse |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 1.5.2006 Где: Кривой Рог Репутация: нет Всего: 2 |
(SELECT * FROM table3 AS t3, table2 AS t2 WHERE t3.id2=t2.id2 ORDER BY t3.id2 DESC LIMIT 1 ) AS l
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |