После 2 дней поиска и поиска похожих вопросов, он дошел до точки, где мне нужно задать вопрос!MySQL Один-ко-многим SUM от COUNTs
I имеют следующую структуру базы данных (упрощенный) ..
mt_product | mt_sku | mt_price
========== | ====== | ========
id | brand_id | mpn | id | product_id | retailer_id | sku | id | sku_id | price | date
Например ...
* Можение Coca-Cola является один продукт.
* Его можно продавать во многих разных магазинах, у которых у всех будет SKU.
* Этот SKU будет иметь цену, которая может меняться день ото дня.
Я хочу перечислить общее количество цен на продукт.
Чтобы перечислить это я в настоящее время имею следующий запрос, который почти работает ...
SELECT
p.id AS pid, p.title AS p_title, p.cat, p.mpn,
b.id AS bid, b.name AS brand,
(SELECT COUNT(s.id) FROM mt_sku AS s WHERE s.pid = p.id) AS num_sku,
(SELECT COUNT(gbp.id) FROM mt_price AS gbp INNER JOIN mt_sku ON mt_sku.id = gbp.sid) AS num_price
FROM mt_product AS p
INNER JOIN mt_brand b ON p.bid = b.id
INNER JOIN mt_sku s ON p.id = s.pid
num_sku возвращается, как и ожидался, однако, когда я ввожу второй вспомогательный запрос для num_price (и я это много раз пересмотренный) я либо get ...
* no duplications of pid, но num_price - общее количество цен на SKUs, а не количество цен на этот товар_ид (в качестве запроса выше) eg1_img * правильное количество num_price, но вместо суммируя общее число num_price, pid дублируется в таблице (в качестве запроса ниже) - поэтому, поскольку pid дублируется, это не дает мне результата Я хочу. Я добавил DISTINCT, поскольку это помогло более ранней версии запроса, теперь это не имеет никакого значения. eg2_img
SELECT
DISTINCT(p.id) AS pid, p.title AS p_title, p.cat, p.mpn,
b.id AS bid, b.name AS brand,
(SELECT COUNT(s.id) FROM mt_sku AS s WHERE s.pid = p.id) AS num_sku,
(SELECT COUNT(gbp.id) FROM mt_price AS gbp WHERE s.id = gbp.sid) AS num_price
FROM mt_product AS p
INNER JOIN mt_brand b ON p.bid = b.id
INNER JOIN mt_sku s ON p.id = s.pid
Я уверен, что ключ к этому является то, что
продукт может иметь несколько наименований, из которых SKU имеет несколько ценовую историю.
Любая помощь или идеи схемы будет превосходной.
Добавьте короткий пример, содержащий 2-3 строки из каждой таблицы и ожидаемый результат запроса; это поможет нам понять вашу проблему. – axiac
Спасибо ... Первый запрос дает это - [link] (http://mrflibble.xyz/img/qry_eg2.PNG) Второй запрос дает это - [link] (http://mrflibble.xyz /img/qry_eg3.PNG) – themrflibble
Вывод ваших запросов не очень помогает. Поместите входные данные и вывод, который вы ** ожидаете **. – axiac