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

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

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 Нужно выбирать данные три раза из трех таблиц: Файлы. статьи и комментарии

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

3.91

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

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

3.91

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

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

3.82

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

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

3.74

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

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

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

3.91

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

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

4.03

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

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

3.74

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

А на счет

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

не понял

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

3.91

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

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


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

не понял


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

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


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

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

4.03

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

Хотите опробовать SLAED CMS в действии?

Идеи и предложения
Обратная связь