Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Jodah
Эксперт PHP
3488 / 2932 / 1235
Регистрация: 01.08.2012
Сообщений: 10,108
1
MySQL

Фильтрация данных

19.08.2015, 14:56. Просмотров 1049. Ответов 6
Метки нет (Все метки)

Добрый день!

Есть БД, в ней, помимо прочих, 3 таблицы:
products - id_product, name, content
products_items - id_item, id_product, name, price
products_to_categories - id_product, id_category

products - карточка товара (например, iPad 3), products_items - товарные позиции (например, iPad 3 64Gb White). Одной карточке товара может соответствовать несколько товарных позиций.

Получаю товары определённой категории примерно так:

SQL
1
2
3
SELECT * FROM `products`
    INNER JOIN `products_to_categories` USING (`id_product`)
        WHERE `products_to_categories`.`id_category` = 24
Пример возвращаемых данных:

id_productnamecontent
2Генератор деревянныйОписание
19Циркулярный насосОписание

Задача: для каждого товара добавить вывод минимальной цены из товарных позиций, а также отсортировать по этому полю.

Подскажите, куда копать.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2015, 14:56
Ответы с готовыми решениями:

Фильтрация данных
С помощью запроса SHOW COLUMNS FROM `first_table` получить информацию о полях БД. Для каждого поля...

фильтрация данных
Здравствуйте. Есть код, который записывает информацию в бд с переменных $result =...

Фильтрация данных по дате sql
Доброго времени суток. Помогите составить условие WHERE для выборки данных по неполной дате,...

Множественная фильтрация по базе данных
Не могу понять как сделать множественную фильтрацию, есть много способов фильтров, по которым...

6
APlayer
4 / 4 / 2
Регистрация: 26.03.2015
Сообщений: 56
19.08.2015, 16:10 2
Для построения больших/сложных запросов к БД я начал пользоваться софтиной dbForge. Программа подключается к существующей БД. И уже потом визуально можно составлять требуемый запрос (с сортировками, отбором по введенным данным и пр.пр.пр.), а программа сама сгенерирует SQL-запрос.
0
Grossmeister
Модератор
3715 / 2711 / 498
Регистрация: 21.01.2011
Сообщений: 11,735
19.08.2015, 16:30 3
Цитата Сообщение от APlayer Посмотреть сообщение
потом визуально можно составлять требуемый запрос
Не знаю этой "софтины", но по опыту визуальные построители плохо справляются со сложными запросами. Правда, может быть понятие "сложный запрос" у нас отличаются
0
Jodah
Эксперт PHP
3488 / 2932 / 1235
Регистрация: 01.08.2012
Сообщений: 10,108
19.08.2015, 16:55  [ТС] 4
Всем спасибо, кажется нашёл решение.
SQL
1
2
3
4
5
6
SELECT *, MIN(price_ru) AS 'price' FROM `products`
    INNER JOIN `products_to_categories` USING (`id_product`)
    INNER JOIN `products_items`USING (`id_product`)
        WHERE `products_to_categories`.`id_category` = 24
            GROUP BY(id_product) HAVING(price)
                 ORDER BY price
0
APlayer
4 / 4 / 2
Регистрация: 26.03.2015
Сообщений: 56
19.08.2015, 17:05 5
2 Grossmeister Вот такой запрос мне эта софтина построила
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
SELECT
  productmonitoring.ProductMonitoringDate,
  region.RegionName,
  users.UserName,
  productpos.ProductPosName,
  productgender.ProductGenderName,
  productmonitoring.ProductMonitoringName,
  productmonitoring.ProductMonitoringInfo,
  productmonitoring.ProductMonitoringPrice,
  productmonitoring.ProductMonitoringImage,
  productmonitoring.Competitor1Name,
  productmonitoring.Competitor1Price,
  productmonitoring.Competitor2Name,
  productmonitoring.Competitor2Price,
  productmonitoring.Competitor3Name,
  productmonitoring.Competitor3Price
FROM productmonitoring
  INNER JOIN productgender
    ON productmonitoring.ProductGenderID = productgender.ProductGenderID
  INNER JOIN productpos
    ON productmonitoring.ProductPosID = productpos.ProductPosID
  INNER JOIN users
    ON productmonitoring.UserID = users.UserID
  INNER JOIN region
    ON users.RegionID = region.RegionID
{$query_date}{$query_posid}{$query_genderid}{$query_regionid}{$query_user}       
ORDER BY productmonitoring.ProductMonitoringDate
Переменные в конце запроса - мои условия. И всё работает.
0
Grossmeister
Модератор
3715 / 2711 / 498
Регистрация: 21.01.2011
Сообщений: 11,735
19.08.2015, 17:09 6
Цитата Сообщение от APlayer Посмотреть сообщение
Вот такой запрос мне эта софтина построила
Этот запрос довольно простой. Если нет подзапросов (да еще нескольких уровней вложенности), то о какой сложности идет речь? Я уж не говорю о том, что в запросах часто используются функции, а они в каждой СУБД свои. Значит такой построитель должен внутри себя иметь некое описание этих функций, что когда применять и проч.
0
APlayer
4 / 4 / 2
Регистрация: 26.03.2015
Сообщений: 56
19.08.2015, 17:36 7
Grossmeister,
Я говорю именно об опыте работы с этой софтиной. Она заточена под мускул. А вот при ручном составлении запросов я спотыкался.
0
19.08.2015, 17:36
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2015, 17:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Фильтрация в php при выводе данных из базы
Здравствуйте дорогие друзья ! Я новичок в php. Если честно долго мучиться тоже не стал, а решил...

Вопрос по правильной подготовке данных для БД (экранирование, фильтрация и пр.)??
Здравствуйте! Разрабатывал, разрабатывал сайты и наконец пришел к такой проблеме: требуется...

Фильтрация данных по диапозоны
Есть два input'a с типом date, mysql таблица с полями date и text, эта таблица выводится на сайт....

Фильтрация данных, переданных через адресную строку
Доброго времени суток. В общем передаю идентификаторы через запятую в адресной строке, например:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.