2017-12-22 7 views
-1
mit

Es gibt zwei Tabellen:MYSQL: gefilterten Zeilen zählen mit

CREATE TABLE `products` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`price` decimal(10,2) unsigned NOT NULL, 
`quantity` smallint(5) unsigned NOT NULL, 
`name` varchar(100) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `products_item` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`product_id` int(10) unsigned NOT NULL, 
`quantity` smallint(6) unsigned DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

und grundlegende Abfrage, die einige Zeilen

select p.id, p.quantity, sum(pi.quantity) as pi_quantity 
from products p 
left join products_item pi on pi.product_id=p.id 
group by p.id 
having p.quantity > sum(pi.quantity) 

zurückkehren Wie kann ich die Anzahl der Produktreihen pro p.id zählen?

Danke.

+1

Anzahl der Zeilen ?, bitte geben Sie das erwartete Ergebnis an – 2oppin

+0

Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me -zu-eine-sehr-einfach-sql-Abfrage – Strawberry

+0

Meinst du pro-ID-Anzahl oder eine Zählung der Gesamtzahl der Zeilen? – Barmar

Antwort

0

Fügen Sie einfach COUNT(pi.id) zur Abfrage hinzu.

select p.id, p.quantity AS quantity, sum(pi.quantity) as pi_quantity, COUNT(pi.id) AS pi_count 
from products p 
left join products_item pi on pi.product_id=p.id 
group by p.id 
having quantity > pi_quantity 

Sie können auch in der HAVING Klausel zu dem Alias ​​verweisen.

Verwandte Themen