2010-12-10 4 views
1

J'ai 3 tables3 tableau count requête 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) 

je besoin d'une sortie en tant que telle

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

Comment puis-je obtenir cette seule requête à l'aide?

Merci

EDIT

J'ai essayé la requête suivante qui ne fonctionne pas:

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

Avec 'JOIN',' GROUP BY' et 'COUNT'. Je suis juste trop paresseux pour écrire la requête en ce moment. – Bobby

+0

@Bobby: J'ai essayé la requête suivante en sélectionnant p.name, count (s.salesid) en tant que Sales, count (l.linkid) en tant que Links à partir de produits p left rejoindre sales s sur p.productid = s.productid left join links l sur p.products = l.productid groupe par p.productid mais ça ne marche pas –

+0

S'il vous plait, dites-nous toujours dans la question ce que vous avez déjà essayé, cela aide aussi pour vous aider. – Bobby

Répondre

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 

En supposant qu'il y ait une typo concernant le ProductID dans la deuxième ligne de votre résultat de requête exemplaire.

+0

type signifie, s'il vous plaît expliquer? –

+1

@ I-M-JM - vous lister le produit 1 avec 2 noms différents dans votre exemple. – JNK

+0

@ I-M-JM: * faute de frappe * ("erreur de frappe"), pas * type *. – Flinsch

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

faux compte arrive à deux reprises –

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