Открыть Ответить

Можно ли упростить Mysql запрос?

5.00

5.00

1
20.07.2011 17:39:33 24.07.2011 16:13:20

Суть написанного:
Данный запрос формирует типа как "Микроблогинг" - т.е. последние действия определенных пользователей. Запрос работает ЧЕТКО и ПРАВИЛЬНО

SELECT a.friend_name, u.user_name, u.user_photo_thumb, b.id, b.title, b.date, b.use_comments, '{$prefix}_files' as the_files FROM {$prefix}_friends AS a LEFT JOIN {$prefix}_users AS u ON a.friend_name=u.user_name LEFT JOIN {$prefix}_files AS b ON a.friend_name=b.author WHERE a.user_name='$USER[user_name]' AND b.date<=now() AND b.status='1' UNION ALL SELECT a.friend_name, u.user_name, u.user_photo_thumb, b.id, b.title, b.date, b.use_comments, '{$prefix}_notes' as the_notes FROM {$prefix}_friends AS a LEFT JOIN {$prefix}_users AS u ON a.friend_name=u.user_name LEFT JOIN {$prefix}_notes AS b ON a.friend_name=b.author WHERE a.user_name='$USER[user_name]' AND b.to_all='1' UNION ALL SELECT a.friend_name, u.user_name, u.user_photo_thumb, b.file_id, b.content, b.date, b.module, '{$prefix}_comments' as the_comm FROM {$prefix}_friends AS a LEFT JOIN {$prefix}_users AS u ON a.friend_name=u.user_name LEFT JOIN {$prefix}_comments AS b ON a.friend_name=b.user_name WHERE a.user_name='$USER[user_name]' ORDER BY date DESC LIMIT 30 ";


Что имеем:
1) Берем имя пользователя с таблицы друзей
2) LEFT JOIN-ом выбираем аваторку из таблицы пользователей
3) LEFT JOIN-ом проверяем есть ли добавленные файлы
4) при помощи UNION ALL делаем тоже самое только с таблицами статей и комментариев..
Можно ли вобще избавиться от 2х UNION ALL ? И если альтернатива данному запросу?
PS Нужно выбирать данные три раза из трех таблиц: Файлы. статьи и комментарии

Группа
Посетители
Пункты
772
Регистрация
01.06.2006
Пол
Мужчина
Из
Моздок
Предупреждения
Нет
sam07
sam07
3.91

3.91

24.07.2011 16:10:48

Да елы палы, походу никто ничего сложнее, кроме как UPDATE table_files SET hits=hits+1 не писал

Группа
Посетители
Пункты
772
Регистрация
01.06.2006
Пол
Мужчина
Из
Моздок
Предупреждения
Нет
sam07
sam07
3.91

3.91

26.07.2011 12:45:48

Напиши сюда, тут помогут http://pro-script.ru

Регистрация
08.10.2008
Пол
Мужчина
Из
Россия-Иркутск
Предупреждения
Нет
Migrans
Migrans
3.82

3.82

27.07.2011 17:16:02

А что туда писать если я не знаю Смайл - 06

Группа
Клиент
Пункты
2121
Регистрация
02.11.2008
Пол
Мужчина
Из
Пермь
Предупреждения
Нет
ra55551
ra55551
3.75

3.75

27.07.2011 21:51:10 28.07.2011 09:36:55

Ладно, все равно приятно, что хоть кто то живой есть...
PS удаляйте тему

Группа
Посетители
Пункты
772
Регистрация
01.06.2006
Пол
Мужчина
Из
Моздок
Предупреждения
Нет
sam07
sam07
3.91

3.91

29.07.2011 04:38:14

Запрос вырван из контекста.
Не проверял, но можно попробовать сделать из него один запрос через JOIN, но тогда для каждой из трех таблиц (Файлы, статьи и комментарии) будут отдельные колонки, а не так как у тебя сейчас.

Группа
Новички
Пункты
121
Регистрация
08.04.2006
Пол
Мужчина
Предупреждения
Нет
patriot
patriot
4.03

4.03

31.07.2011 03:25:39

patriot, Если есть время перепиши пожалуйста свой класс кеширования sql-запросов. Очень нужною

Группа
Клиент
Пункты
2121
Регистрация
02.11.2008
Пол
Мужчина
Из
Пермь
Предупреждения
Нет
ra55551
ra55551
3.75

3.75

31.07.2011 16:33:35

patriot, да, совершенно верно, если пробегать по всем таблицам JOIN-ом то получится что сначала пойдут только файлы, потом только статьи и только комменты

А на счет

Запрос вырван из контекста.

не понял

Группа
Посетители
Пункты
772
Регистрация
01.06.2006
Пол
Мужчина
Из
Моздок
Предупреждения
Нет
sam07
sam07
3.91

3.91

02.08.2011 23:30:27 02.08.2011 23:31:52

patriot, да, совершенно верно, если пробегать по всем таблицам JOIN-ом то получится что сначала пойдут только файлы, потом только статьи и только комменты


так должно получаться при использовании U NION...
Видимо, все таки, не получится только join использовать.

не понял


Не понятно что ты дальше будешь делать с полученными данными, как ты их будешь обрабатывать. Может и не нужно ничего упрощать )

Если есть время перепиши пожалуйста свой класс кеширования sql-запросов. Очень нужною


переписать для чего?

Группа
Новички
Пункты
121
Регистрация
08.04.2006
Пол
Мужчина
Предупреждения
Нет
patriot
patriot
4.03

4.03

Открыть Ответить
Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код