Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 31.01.2010
Сообщений: 18

Как правильно сделать запрос в базу?

04.03.2017, 07:14. Показов 1498. Ответов 4

Студворк — интернет-сервис помощи студентам
одна бд, в ней две таблицы:
1. монтаж (id, cat,name,price,desc) пример (1, 1, name, 4400, описание) id заполняется автоматом.
2. фото (id, cat, src) (1, 1, адрес до img) с id тоже самое.
таблица фото содержит десятки записей изображений различных категорий, категорий тоже много.

ситуация следующая:
на страницу выводятся все категории (имя, картинка (в роли ссылки), цена.
все кроме картинки выводится верно.

задача/вопрос: сформулировать запрос в бд таким образом, чтобы у каждой категории была картинка, которая числится в бд первая в своей категории.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2017, 07:14
Ответы с готовыми решениями:

Подскажите как сделать правильно запрос на MySql
Добрый день. Пожалуйста, подскажите как сделать запрос на вывод данных из MySQL Задача такая на простом примере таблиц. Есть 2...

Как правильно сделать запрос поиска в базе данных?
Здравствуйте. Подскажите пожалуйста, как решить задачу: Есть таблица БД: tbl_post с объявлениями. Есть поле в этой таблице: ...

Как правильно сделать запрос к MySQL для подсчета записей
Всем привет. Сделал себе вот такой вывод всех категорий на главной странице сайта (CMS DLE): ссылка удалена Выводится: название и...

4
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.03.2017, 10:02
Делайте дополнительный запрос. Можно JOIN, конечно, использовать, но тогда на выходе Вы получите избыточные данные, которые придётся программно сводить к единственному значению.
0
0 / 0 / 1
Регистрация: 31.01.2010
Сообщений: 18
04.03.2017, 20:14  [ТС]
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<div id="all">
    <div id="konteiner">
        <div id="verh">
            <? require_once ('pat/logo.php');
            require_once ('pat/gmenu.php'); 
            require_once ('pat/main_img.php'); ?>
            <div id="par">
                <h1 align="center">Montaje De Casetas</h1>
            </div>
            
            <?
            
            
            $query = "select * from `montaje`";
            $result = mysqli_query ($connect,$query);
            
            $count = mysqli_num_rows($result); //`считаем кол-во записей
            $rows = $count/3; //т.к. у нас выводится в три колонки, то мы делим на 3
            
            if($count == 0) {
                echo"<div id='par'>Домов пока нет!</div>";
            } else {
            
                $query2 = "select * from `foto` WHERE `main` = 1";
                $result2 = mysqli_query ($connect,$query2);
                $row2 = mysqli_fetch_array($result2);
                                
                $cols = 3; // количество столбцов, td
                $rows = ceil($rows); // количество строк, tr
                            
                echo"
                <table class='montaje' cellpadding='0' cellspacing='0' border='0'>";
                            
                for ($tr=1; $tr<=$rows; $tr++){ // в этом цикле счётчик $tr 
                // следит за количеством строк и всегда равен текущему номеру строки.
                // То есть в начале $tr=1, так как в начале у нас 1 строка, затем
                // каждый раз прибавляем единицу, пока не дойдём до заданного количества
                // $rows.
                    echo"
                    <tr align='center'>";
                
                    for ($td=1; $td<=$cols && $row = mysqli_fetch_array($result); $td++){
                    // в этом цикле счётчик $td аналогичен счётчику $tr.
                        echo"
                            <td width='33%' style='color:#5b9839;'>
                                <b>".$row['names']."</b><br />
                                <a href='view_casa.php?cat=".$row['cat']."'><img src='".$row2['src']."' width='200'></a><br />
                                <b>".$row['price']."</b><br />
                            </td>";     
                    }
                    echo"</tr>";                    
                }
                echo"</table>";
            }
            ?>
        </div>
    </div>
</div>
Можно в таблицу montaje добавить поле src, которое будет содержать адрес изображения - проблема решена. Но в таком случае таблица фото не до конца выполняет свою роль, тем более что по cat и по main (главное изображение, которое и должна выходить на страницу) вполне пригодна для сортировки. Делать запрос только из одной таблицы это легкий способ, а как сделать запрос из двух таблиц с сортировкой? А как двойной запрос сделать до меня пока дойти не может.
Миниатюры
Как правильно сделать запрос в базу?   Как правильно сделать запрос в базу?  
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
04.03.2017, 20:38
Лучший ответ Сообщение было отмечено Infinitive как решение

Решение

SQL
1
2
3
SELECT * FROM `montaje` m
JOIN `foto` f ON f.cat = m.cat
WHERE f.main = 1 GROUP BY f.cat
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.03.2017, 07:27
Виталюска, согласно стандарту SQL, поля, указанные в списке выборки, должны либо быть перечислены в GROUP BY, либо быть переданы агрегатной функции.

В MySQL, конечно, работает (при отключенном ONLY_FULL_GROUP_BY), но результат выборки непредсказуем.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2017, 07:27
Помогаю со студенческими работами здесь

Как в sql запрос вставить еще один запрос правильно?
Есть длинный запрос, в котором можете даже не разбираться если не хотите, но выдает он следующее: Запрос: SELECT...

Запрос INSERT INTO как построить запрос правильно?
Народ помогите пожалуйста сделать запрос правильно. Имеется таблица users в ней имеется данные для регистрации и данные для профиля. ...

Как правильно организовать базу данных
Пишу сайт-портфолио. Помогите как правильно организовать базу данных. Хочу сделать примерно так: главная страница - обзор всех видов...

Подскажите как правильно организовать базу данных
Есть таблица с информацией о работнике (id_работника и т.д.). Есть расписание, в котором я хочу указывать в какое время, какая команда...

Как создать запрос PDO для записи данных в базу
Как создать запрос PDO что бы данные записались в базу? Например: Есть таблица пользователей с полями name|lastname|city|godrogden ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru