Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/20: Рейтинг темы: голосов - 20, средняя оценка - 4.60
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324

Запрос с условиями

26.02.2011, 17:38. Показов 4107. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Пишу админку для галереи. Всё работает...но хотелось бы сделать всё работало красиво
В общем есть 2 таблица в базе, одна (gallery) содержит в себе все альбомы и состоит из id, title(название альбома),cover(обложка альбома), discription(описание); вторая(photos) содержит информацию о фотографиях id, album(соответствует полю id в таблице с альбомами - именно по этому полю определяется какому альбому принадлежит фото), path(название фото), description(описание фото). Хотелось бы сделать один запрос, при помощи которго можно определить если у альбома не определена обложка, то выведется любая фотография наугад из этого альбома в качестве обложки, а если альбом пуст, то выведется заготовленная картинка(что то типо стандартной обложки). Могу это реализовать несколькими запросами, но если есть вариант одним, то подскажите пожалуйста.

данную тему я создавал в ветке php и базы данных, но мне там посоветовали обратиться в данную ветку - буду рад если поможете .
Вот ссылка на тему Запрос с условиями
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.02.2011, 17:38
Ответы с готовыми решениями:

Запрос с несколькими условиями
Здравствуйте, специалисты! Помогите, пожалуйста, составить sql-запрос. Дано: две таблицы 1) клиенты clients (id, workstatus):...

Выполнить запрос с несколькими условиями
Здравствуйте. Подскажите пожалуйста почему не хочет работать вот такой код: $strSQL = "SELECT * FROM baza WHERE srok...

INSERT c условиями
Здравствуйте! Помогите, пожалуйста, написать такой запрос - есть таблица с двумя колонками: номер документа (первичный ключ) и тип...

4
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
26.02.2011, 18:16
Если выбирает только один альбом по его id:
SQL Скопировано
1
2
3
4
5
6
7
8
9
10
SELECT `g`.*, IF(`g`.`cover` = '' AND `p`.`path` IS NOT NULL, `p`.`path`, `g`.`cover`) AS `_cover`
FROM `gallery` AS `g`
    LEFT JOIN (
        SELECT *
        FROM `photos`
        WHERE `album` = 42
        ORDER BY RAND()
        LIMIT 1
    ) AS `p` ON `g`.`id` = `p`.`album` AND `g`.`cover` = ''
WHERE `g`.`id` = 42
Не проверял. Его id=42 в двух местах (!)

Если выбираем не по id или выбираем сразу несколько альбомов, то надо сложнее придумывать.
1
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
27.02.2011, 08:08  [ТС]
Когда убираю строчки с id=42 выводит несколько альбомов, вроде как ни чего, но всё же немного не то что я хотел. В общем на выходе должно получиться следующее (рис 1), стандартная обложка находится на 1 уровне с папками, в которых хранятся фотографии галереи (название папки = id альбома в базе). Покажу рабочий код который справляется с работой, но в нём 2 запроса и проверка на то пуста ли обложка (cover) происходит в php, а не в sql запросе. К тому же стандартная обложка должна показываться в том случае, если не определена обложка альбома и нет фотографий в альбоме.
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$sql_gallery = "SELECT * FROM `gallery`";
$res_gallery = mysql_query($sql_gallery);
if($res_gallery and mysql_num_rows($res_gallery) > 0)
{   
while($row_gallery = mysql_fetch_assoc($res_gallery))
{
$cur_alb = $row_gallery['id'];
$photo_amount = mysql_num_rows(mysql_query("SELECT `id` FROM `photos` WHERE `album` = '".$row_gallery['id']."'"));
$row_gallery['cover'] == '' ? $cur_cover = 'no-cover.jpg' : $cur_cover = $row_gallery["id"]."/pre_".$row_gallery["cover"];
echo '<tr id="par">
<td><img src="files/gallery/'.$cur_cover.'" widht="100" height="100"/></td>
<td id="album_central_td">
    <div>
        <strong>Название альбома:</strong> '.htmlspecialchars($row_gallery["title"]).' <br/>
        <strong>Количество фотографий:</strong> '.$photo_amount.' <br/>
        <strong>Дата создания:</strong> '.$row_gallery["created"].' <br/>
    </div>
    <textarea class="album_description">'.htmlspecialchars($row_gallery["description"]).'</textarea>
</td>
<td valign="top">
    <a href="gallery_editor.htm&album='.$row_gallery["id"].'" class="img_btn"><img src="https://www.cyberforum.ru/images/admin/edit.png" title="Редактировать альбом" width="24" height="24"/></a>
    <a href="#" class="img_btn delete"><img src="https://www.cyberforum.ru/images/admin/delete.png" title="Удалить альбом" width="24" height="24"/></a>
    <br/><br/><br/>
    <a href="#" class="img_btn update"><img src="https://www.cyberforum.ru/images/admin/update.png" title="Сохранить описание фото" width="24" height="24"/></a>
    <a href="#" class="img_btn exit_edit"><img src="https://www.cyberforum.ru/images/admin/exit_edit.png" title="Отменить" width="24" height="24"/></a>
    <input type="hidden" value="'.$row_gallery["id"].'" class="id_marker" />
</td>
</tr>';
}
}
помоему это не лучшее решение данной задачи
Миниатюры
Запрос с условиями  
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
27.02.2011, 14:38
Цитата Сообщение от xand Посмотреть сообщение
В общем на выходе должно получиться следующее (рис 1)
Вот с этого и надо было начинать.
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
28.02.2011, 09:30
SQL Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT 
    gallery.name, 
    IF
    (
        gallery.title IS NULL,
        IF
        (
            EXISTS ( SELECT * FROM FROM photos WHERE photos.album = gallery.id ),
            (
                SELECT photos.image
                FROM photos
                WHERE photos.album = gallery.id
                LIMIT RAND(),1
            ),
            (
                SELECT photos.image
                FROM photos
                WHERE photos.id = 0# стандартная обложка
            )
        ),
        gallery.title
    ),
    gallery.description
FROM gallery
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2011, 09:30
Помогаю со студенческими работами здесь

Тригер с двумя условиями
Помогите поправить условие в триггере пробовал разные вариации не получается сделать 2 шаг.. Первый записываю значение 1 в таблицу или...

Поиск по базе с особыми условиями
Добрый день! помогите реализовать поиск по базе следующего вида: есть несколько пунктов, которые !обязательно! должны быть в одной...

Выбор несколько случайных записей с разными условиями
Есть таблица users в ней есть поле category_id. Подскажите как выбрать из таблицы users по одному случайному пользователю с разными...

Одновременный вывод из одной и той же бд строки но с разными условиями
Доброго времени формучане есть скрипт вывода строк $result = mysql_query(&quot;SELECT * FROM sms WHERE komu='$db_id' AND author='$ot' ORDER BY...

Задачу не могу сделать идеально с двумя условиями хитрыми
есть задача от Яндекса для решения задачи я бы написал 2 разных запроса элементарных! но тут скорее всего надо написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер