2015-11-14 6 views
-1

у меня есть 3 таблицы следующим образом:извлечения данных из 3 таблиц

Таблица 1: продукта

id_product [Primary Key],added_time. 

Таблица 2: Категория

id_category [Primary Key],Category_name. 

Таблица 3: product_category

id_category,id_product [Both Foreign Keys] 

Я хочу, чтобы вытащить данные в

Category_name, No Of Products в этой категории, Last time, когда продукт был добавлен в категорию (Последние added_time продукта).

+0

Извините, но SO не является бесплатным кодовым письмом. Я предлагаю вам начать программировать, проводить исследования, стараться учиться, реализовывать свой подход. _Then_, если вы столкнетесь с определенной проблемой кодирования, то тогда время попросить здесь. Благодаря! – arkascha

+0

Просьба предоставить несколько подробностей, таких как структура таблицы и то, что вы пробовали для решения этой проблемы. –

ответ

1

Вы могли бы использовать этот SQL:

SELECT  Category.Category_name, 
      Count(DISTINCT Product.id_product) AS num_products, 
      Max(Product.added_time) last_added_time 
FROM  Category 
LEFT JOIN product_category 
     ON product_category.id_category = Category.id_category 
LEFT JOIN Product 
     ON Product.id_product = product_category.id_product 
GROUP BY Category.Category_name; 

Обратите внимание, что при использовании LEFT JOIN вы будете уверены, чтобы перечислить все категории, даже те, для которых не существует ни одного товара. Если вы этого не хотите, замените оба слова LEFT на INNER.

Следует также отметить, что в стандартной SQL вам нужно GROUP BY столбцы вы упоминаете в SELECT списке, если они не объединяются, как с MAX или COUNT.

+0

Я хочу получить изображение последнего продукта, а также последнее добавленное время. Как я могу это получить? – Prashant

+0

В исходном вопросе не упоминается изображение продукта. Могу ли я попросить вас задать новый вопрос? – trincot

+0

Первая таблица имеет один столбец с именем FeaturedImage. id_product [Первичный ключ], добавлено_time, featuredimage. Я попытался получить его с помощью product.featuredimage, но он дает изображение другого продукта. – Prashant

0
SELECT C.`Category_name`, 
     (SUM(IF(P.`id_product`IS NULL,0,1))) AS No_of_Products, 
     MAX(P.`added_time`) AS Latest_time 
FROM 
    Category C 
LEFT JOIN 
     product_category P_C ON C.`id_category` = P_C.`id_category` 
LEFT JOIN 
     Product P ON P.`id_product` = P_C.`id_product` 
GROUP BY C.`id_category` 

Надеюсь, это поможет.

Смежные вопросы