Чтение RSS каналов

Форум

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

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

5

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

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

3.91
3
26.07.2011 12:45:48
Напиши сюда, тут помогут http://pro-script.ru
3.82

3.82
4
27.07.2011 17:16:02
А что туда писать если я не знаю Смайл - 06
3.74

3.74
5
27.07.2011 21:51:1028.07.2011 09:36:55
Ладно, все равно приятно, что хоть кто то живой есть...
PS удаляйте тему
3.91

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

4.03
7
31.07.2011 03:25:39
patriot, Если есть время перепиши пожалуйста свой класс кеширования sql-запросов. Очень нужною
3.74

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

А на счет

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

не понял
3.91

3.91
9
02.08.2011 23:30:2702.08.2011 23:31:52

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


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

не понял


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

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


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

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

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь