=) Есть у меня четыре таблицы: stocks, items, categories, taxonomy Это как все поняли - склад. Нужно вывести категории с подсчетом количества позиций в каждой категории. Вот пример таблиц: https://www.db-fiddle.com/f/vQTgED7YfXWSRti1zt2Y5i/21
Я смог только вывести категории:
SELECT `c`.`name`,
`i`.`count`
FROM `categories` AS `c`
JOIN `taxonomy` AS `t` ON `c`.`id` = `t`.`term`
JOIN `stocks` AS `st` ON `st`.`id` = `t`.`object`
JOIN `items` AS `i` ON `i`.`id` = `t`.`object`
WHERE (`st`.`id` = 1);
Таблицы:
Taxonomy связывает разные таблицы:
type='category'
, то это связка склада(term) с категорией(object) type='item'
, то это связка категории(term) с позицией(object) Суть задачи такова, что нужно вывести список с категориями (что я и сделал) и вторым значением (столбцом) нужно вывести количество позиций в каждой из категорий используя значение count из таблицы items
Проблема в том, что в таблице taxonomy
у вас ссылки на разные сущности.
Имея в виду что-то одно, нужно добавлять соответствующий фильтр по полю type
.
В первом приближении это выглядит так:
SELECT st.name
, cat.name category
, i.name item, i.count
FROM stocks st
JOIN taxonomy t_st ON t_st.type='item' AND t_st.object=st.id
JOIN items i ON i.id = t_st.term
JOIN taxonomy t_cat ON t_cat.type='category' AND t_cat.object=i.id
JOIN categories cat ON cat.id = t_cat.term
К этому уже можно добавить требуемые фильтры/группировки:
SELECT st.name
, cat.name category
, GROUP_CONCAT(i.name) items
, SUM(i.count) cnt
FROM stocks st
JOIN taxonomy t_st ON t_st.type='item' AND t_st.object=st.id
JOIN items i ON i.id = t_st.term
JOIN taxonomy t_cat ON t_cat.type='category' AND t_cat.object=i.id
JOIN categories cat ON cat.id = t_cat.term
WHERE st.id = 1
GROUP BY st.id, cat.id, st.name, cat.name
Я бы всё-таки рекомендовал бы разделить taxonomy на несколько таблиц и добавить соответствующие ограничения внешнего ключа(foreign keys)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я новичок в PHP, очень сложно разобраться в документации, поэтому решил задать сюда вопрос
Есть код под хамп работает а под Ubuntu нет, ремируешь QRcode::png класс всё норм, но естественно картинок не создаёт, в чём может быть отличияРазрешения...
Есть сообщения из БД, как сделать что-то типо диалоговЧтобы показывалось только последнее сообщение (проверка по логину)
Ранее задавал вопрос как сортировать данные полученные из базы средствами PHP, посоветовали что лучше составить запрос на SQL