Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мудреный запрос
 
 автор: vitaleks   (30.08.2009 в 15:58)   письмо автору
 
 

Добрый день
Необходима помощь со следующими запросами:

1. Суть - обзорная страница с одной случайной картинкой на категорию. Вывод случайной картинки реализовать не смог, что посоветуете?

$result=dbquery(
"SELECT COUNT(bg_id) AS bg_count, bg_url, bg_id, bg_cat_id, bg_cat_name
FROM bg, bg_cat WHERE bg_cat=bg_cat_id GROUP BY bg_cat_id"
);

2. Суть - вывод картинок из опред. категории которые отвечают двум требованиям:
1). Картинка открыта для общего обозрения
2). Картинка закрыта для общего обозрения, за исключением поподания пользователя в список избраных. (Список имеет вид 5.18.26.)

Два запроса писать желания нет, да и нагрузка возрастет:

$result = dbquery("SELECT bg_id, bg_url, bg_status, bg_for FROM bg WHERE bg_cat='$cat'");
if (bg_status=1) ... проверка

Что посоветуете?

  Ответить  
 
 автор: cheops   (30.08.2009 в 16:02)   письмо автору
 
   для: vitaleks   (30.08.2009 в 15:58)
 

1) Для вывода записей в случайном порядке используется конструкция ORDER BY RAND()
SELECT COUNT(bg_id) AS bg_count, bg_url, bg_id, bg_cat_id, bg_cat_name
FROM bg, bg_cat WHERE bg_cat=bg_cat_id
GROUP BY bg_cat_id
ORDER BY RAND()

  Ответить  
 
 автор: Vitaleks   (30.08.2009 в 16:18)   письмо автору
 
   для: cheops   (30.08.2009 в 16:02)
 

1. Пробывал, начинают перемешиваться категории

  Ответить  
 
 автор: cheops   (30.08.2009 в 16:04)   письмо автору
 
   для: vitaleks   (30.08.2009 в 15:58)
 

2. Отсортируйте записи по полю bg_status с последующим разбиением массива на двое
SELECT bg_id, bg_url, bg_status, bg_for 
FROM bg 
WHERE bg_cat='$cat'
ORDER BY bg_status

  Ответить  
 
 автор: Vitaleks   (30.08.2009 в 17:26)   письмо автору
 
   для: cheops   (30.08.2009 в 16:04)
 

2. Решил проблему изменив WHERE bg_cat='$cat' AND (bg_status='1' OR ( bg_status='2' AND bg_for LIKE '%.".$user['id'].".%' )) работает как часы.

1. У кого какие предложения? Как рандромить именно bg_id?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования