Ich habe eine hoffentlich einfache MySQL-Abfrage-Frage, die mich spät in der Nacht entzieht. Ich versuche ein SELECT zu machen, das die Anzahl der Instanzen eines Datensatzes (Orders) zählt und diese Instanzen mit einem Wert gruppiert, der in einem Elternteil einige Ebenen über dem Auftrag selbst existiert.MySQL Multi-Level-Elternauswahl/beitreten Frage
Zum Beispiel:
CREATE TABLE `so_test`.`categories` (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
CREATE TABLE `so_test`.`product_group` (
`id` int(10) unsigned NOT NULL auto_increment,
`category_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
CREATE TABLE `so_test`.`products` (
`id` int(10) unsigned NOT NULL auto_increment,
`product_group_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
CREATE TABLE `so_test`.`orders` (
`id` int(10) unsigned NOT NULL auto_increment,
`product_id` int(10) unsigned NOT NULL auto_increment,
`customer_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
Was ich suche, etwas zu tun in der Nähe von:
SELECT count (orders.id), categoryId von den Aufträgen, Kategorien, in denen Aufträgen. customer_id in (1,2,3) GROUP BY orders.productId.productGroupId.categoryId
Angenommen, es gibt 17 Bestellungen für Produkte der Kategorie 1, 2 Bestellungen für Produkte der Kategorie 2 und 214 Bestellungen für die Kategorie 3, wha t Ich bin der Hoffnung, wieder zu bekommen ist:
count(orders.id), categoryId
============================
17 1
2 2
214 3
Wenn ich versuchte, zu einer Gruppe von sagen product_id ich fine..but die Zweistufen-up Teil mich wirft sein würde.
Danke!
In der Tat - danke! – DarkSquid