2010-12-10 4 views
1

У меня есть 3 таблицы3 таблицы MySQL Количество запросов

products [which contains data related to products] 
    productid (int) 
    name (varchar) 
    price (float) 

sales [which contains data related to sales] 
    salesid (int) 
    productid (int) 
    time (datetime) 

links [which contains data related to links from products] 
    linkid (int) 
    productid (int) 
    link (text) 

мне нужен вывод как такой

ProductID Name TotalSales TotalLinkAvailable 
    1  ABCD  10    12 
    1  EFGH  7    25 

Как я могу добиться этого с помощью одного запроса?

Благодаря

EDIT

я попытался следующий запрос, который не работает:

select p.name,count(s.salesid) as Sales, count(l.linkid) as Links 
from products p 
left join sales s on p.productid=s.productid 
left join links l on p.products=l.productid 
group by p.productid 
+0

С `JOIN`,` GROUP BY` и `COUNT`. Я просто слишком ленив, чтобы написать запрос прямо сейчас. – Bobby 2010-12-10 12:58:41

+0

@Bobby: Я попробовал следующий запрос: выберите p.name, count (s.salesid) как Sales, count (l.linkid) в качестве ссылок из продуктов p left join sales s on p.productid = s.productid left join links l на p.products = l.productid группа от p.productid, но она не работает – 2010-12-10 12:59:55

+0

Пожалуйста, всегда сообщайте нам в вопросе, что вы уже пробовали, это помогает как вам помочь. – Bobby 2010-12-10 13:13:37

ответ

0
SELECT p.productid AS ProductID, p.name AS Name, COUNT(s.salesid) AS TotalSales, COUNT(l.linkid) AS TotalLinkAvailable 
FROM products AS p 
LEFT JOIN sales AS s ON s.productid = p.productid 
LEFT JOIN links AS l ON l.productid = p.productid 
GROUP BY p.productid, p.name 

Предполагая, что существует опечатку относительно ProductID во второй строке вашего примерного результата запроса.

0
select p.productid, p.name, count(s.salesid) as TotalSales, count(l.linkid) as TotalLinkAvailable 
    from products p 
     left join sales s 
      on p.productid = s.productid 
     left join links l 
      on p.productid = l.productid 
    group by p.productid, p.name 
0
select p.pname,count(s.salesid) as Sales ,count(l.linkid) as Links 
from products p left join sales s on p.productid=s.productid 
left join links l on p.products=l.productid 
group by p.productid 
Смежные вопросы