Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400

Сделать вывод из БД с сортировкой

29.06.2017, 12:07. Показов 616. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! У меня такая задача встала. Мне нужно подсчитать в БД сколько в каждой категории было оплачено товаров. Т.е если в категории "сериалы" куплено 2 товара, вывести значение 2 и т.д
У меня 3 таблицы:
таблица orders - в ней хранятся id клиента и статус оплаты (оплачено или нет);
таблица buy_products - в ней хранятся данные о товаре купленном и к ней привязан id клиента;
table_produkts - тут хранятся все товары и КАТЕГОРИЯ ТОВАРА
Вот мне их нужно все связать и посчитать. Я попробовал написать код, но он не корректен. Если кому не сложно будет помочь разобрать прошу Вас подсказать
вот нерабочий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// тут я сравниваю айдишники клиента  и проверяю есть ли совпадения и какой у них статус оплаты
 
 $query5 = mysql_query ("SELECT * FROM orders, buy_products WHERE orders.order_id = buy_products.buy_id_orders AND orders.order_pay = 'оплачено'",$link);
 
if (mysql_num_rows($query5) > 0)
 {
  $row5 = mysql_fetch_array($query5);
 
// далее если есть совпадения я заношу id купленного товара из табл buy_products
    $pay_id = $row5["buy_id_product"];
         
//потом я делаю проверку id КУПЛЕННОГО товара должен равняться с id самого товара и вытаскиваю его категорию  brand_id = '1' 
 
    $res5 = mysql_query ("SELECT * FROM table_produkts WHERE products_id = '$pay_id' AND brand_id = '1'",$link);
 
// и с помощью функции  mysql_num_rows подсчитываю кол-во.
 
$result5 = mysql_num_rows($res5);
        
 }
Подскажите корректно ли я все написал и если не сложно подскажите как исправить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2017, 12:07
Ответы с готовыми решениями:

Вывод данных с сортировкой
Привет Есть функция: //****************display_date();********************* function display_date(){ ...

Вывод из таблицы БД с сортировкой по датам
Здравствуйте, подскажите плиз. есть бд, в ней хранятся 30 событий, у каждого своя дата(по возврастанию )нужно чтобы на странице...

JSP вывод таблицы с сортировкой и пагинацией
Покажите пожалуйста пример вывода таблицы на java с пагинацией и сортировкой. Добавлено через 7 минут Проиграю ли я по...

12
 Аватар для virusnyak333
23 / 23 / 0
Регистрация: 09.11.2014
Сообщений: 72
29.06.2017, 12:53
Сам принцип записи данных таким образом считаю не корректным.
Цитата Сообщение от Евгений 86 Посмотреть сообщение
таблица orders - в ней хранятся id клиента и статус оплаты (оплачено или нет);
Цитата Сообщение от Евгений 86 Посмотреть сообщение
buy_products - в ней хранятся данные о товаре купленном и к ней привязан id клиента;
А если я купил первый товар и оплатил, и вдруг захотел купить второй товар ?
Будет две записи что я купил товар и мой id, по id в orders будет 2 записи - оплачено и не оплачено, и как понять какому товару принадлежит оплата?
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 12:57  [ТС]
все верно будет 2 записи

Добавлено через 32 секунды
только id у вас будут разными

Добавлено через 2 минуты
вы вводите данные свои вам присваивается id, затем ваш id привязывается к товарам. Если вы оплатите будет статус оплачено
0
39 / 35 / 23
Регистрация: 10.11.2013
Сообщений: 89
29.06.2017, 13:32
может как-то так
SQL
1
2
3
4
    SELECT B.brand_id,COUNT(*) COUNT FROM buy_products A
    LEFT JOIN table_produkts B
    ON B.products_id = A.buy_id_product
    GROUP BY B.brand_id
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 13:43  [ТС]
Цитата Сообщение от nikisha Посмотреть сообщение
может как-то так
SQLВыделить код
* * SELECT B.brand_id,COUNT(*) COUNT FROM buy_products A
* * LEFT JOIN table_produkts B
* * ON B.products_id = A.buy_id_product
* * GROUP BY B.brand_id
если честно мне не очень понятна эта запись, но хочу проверить. как можно вывести значения на экран нужные мне?
0
39 / 35 / 23
Регистрация: 10.11.2013
Сообщений: 89
29.06.2017, 16:22
покажите структуру таблиц.
когда писал мне это представилось в таком виде
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
25
26
27
28
29
30
CREATE TABLE
table_produkts (
  products_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  products_name TEXT NOT NULL,
  brand_id INT UNSIGNED NOT NULL,
  PRIMARY KEY(products_id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
 
CREATE TABLE
orders (
  order_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  order_name TEXT NOT NULL,
  PRIMARY KEY(order_id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
 
CREATE TABLE
buy_products (
  buy_id_product INT UNSIGNED NOT NULL,
  buy_id_orders INT UNSIGNED NOT NULL,
  order_pay TINYINT(1) NOT NULL,
  FOREIGN KEY (buy_id_product) REFERENCES table_produkts(products_id) ON DELETE CASCADE,
  FOREIGN KEY (buy_id_orders) REFERENCES orders(order_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
 
-- получение кол-ва купленных товаров по категориям
SELECT B.brand_id, COUNT(*) COUNT FROM buy_products A
LEFT JOIN table_produkts B
ON B.products_id = A.buy_id_product
WHERE A.order_pay = 1
GROUP BY B.brand_id

товары
+-------------+---------------+----------+
| products_id | products_name | brand_id |
+-------------+---------------+----------+
| 1 | film1 | 1 |
| 2 | film2 | 1 |
| 3 | serial1 | 2 |
| 4 | serial2 | 2 |
+-------------+---------------+----------+

покупатели
+----------+------------+
| order_id | order_name |
+----------+------------+
| 1 | vasya |
| 2 | petya |
+----------+------------+

заказы
+----------------+---------------+-----------+
| buy_id_product | buy_id_orders | order_pay |
+----------------+---------------+-----------+
| 1 | 1 | 0 |
| 1 | 2 | 1 |
| 1 | 2 | 0 |
| 2 | 1 | 1 |
| 2 | 2 | 1 |
| 4 | 1 | 1 |
+----------------+---------------+-----------+

сколько товаров куплено в каждой категории
+----------+-------+
| brand_id | count |
+----------+-------+
| 1 | 3 |
| 2 | 1 |
+----------+-------+


но сейчас понял что структура другая
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 16:40  [ТС]
таблица orders -
order_id order_pay order_name
1 оплачено вася
2 неоплачено коля

таблица buy_products -
buy_id_orders buy_id_product buy_count_product
1 43 2
2 33 2

таблица table_produkts
products_id title brand_id
43 твин пикс 2
33 xxxx 4

Добавлено через 5 минут
я попробую скриншот прислать
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 16:47  [ТС]
table_produkts
Миниатюры
Сделать вывод из БД с сортировкой  
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 16:48  [ТС]
таблица orders -
Миниатюры
Сделать вывод из БД с сортировкой  
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 16:48  [ТС]
таблица buy_products -
Миниатюры
Сделать вывод из БД с сортировкой  
0
39 / 35 / 23
Регистрация: 10.11.2013
Сообщений: 89
29.06.2017, 19:18
может так
SQL
1
2
3
4
5
6
7
SELECT C.brand_id,SUM(B.buy_count_product) count_products FROM orders A
LEFT JOIN buy_products B
ON B.buy_id_orders = A.order_id
LEFT JOIN table_produkts C
ON C.products_id = B.buy_id_product
WHERE A.order_pay = 'оплачено'
GROUP BY C.brand_id
0
1 / 1 / 3
Регистрация: 21.03.2016
Сообщений: 400
29.06.2017, 20:14  [ТС]
Спасибо, сегодня попробую! подскажите как это вывести на экран?
PHP
1
2
3
 $row = mysql_fetch_array($sql);
        $var = $row['sum'];
echo "var";
Так нужно?
0
39 / 35 / 23
Регистрация: 10.11.2013
Сообщений: 89
30.06.2017, 04:51
категорий же много, в цикле нужно
PHP
1
2
3
while($row = mysql_fetch_array($sql)) {
    var_dump($row);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2017, 04:51
Помогаю со студенческими работами здесь

Вывод файла с сортировкой, метод split()
Здравствуйте! Не могу решить следующую задачу: Создать и заполнить файл случайными целыми числами. Выполнить сортировку содержимого файла...

Вывод списка файлов с последующей сортировкой
Доброго времени суток. Нужна помощь в доработке одного скрипта. (говорю сразу, в php я новичок) В директории есть большое...

Вывод информации из xml на сайт с сортировкой
Я никогда раньше не работал c xml, только знаю это что-то типо бд. Мне надо сделать вывод информации из xml на сайт и должна производиться...

Нужно сделать отчет с сортировкой
Здравствуйте! Делаю отчет, выводятся все записи из таблицы, а мне надо чтоб не все. Хочу сделать форму для печати отчетов. Сделать поле...

Twitter API, Вывод твитов на сайт с сортировкой
Добрый день ув. Программисты php :) Помогите начинающему разобраться с такой вот темой. Цель - выводить с одного аккаунта твиттера, все...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru