Ich habe mehrere Tabellen für eine Bibliotheksdatenbank und ich möchte zählen, wie viele Publikationen an eine bestimmte Gruppe ausgeliehen wurde.
Ich habe diese Tabellen
Patrons TischMysql Count bezogene Datensätze nicht mitgerechnet
CREATE TABLE `patrons` (
`id` int(10) UNSIGNED NOT NULL,
`category_id` int(10) UNSIGNED NOT NULL,
`firstname` varchar(255) NOT NULL,
`lastname` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Patron Kategorien
CREATE TABLE `patron_categories` (
`id` int(10) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL,
`overdue` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Publikationen
CREATE TABLE `publication` (
`id` int(10) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL,
`year` year(4) NOT NULL,
`ISBN` varchar(255) NOT NULL,
`type` varchar(24) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Kasse
CREATE TABLE `checkouts` (
`id` int(10) UNSIGNED NOT NULL,
`publication_id` int(10) UNSIGNED NOT NULL,
`patron_id` int(10) UNSIGNED NOT NULL,
`checkout` date NOT NULL,
`checkin` date NOT NULL,
`actual_checkin` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Dies ist meine Abfrage Mäzen Kategorien mit ihrer gesamten Gönner und ihre aktuelle Anzahl der Publikationen ihrer Kasse aus aufzulisten.
SELECT pc.NAME AS Category,
Count(p.id) AS patrons,
Count(c.id) AS publications
FROM patron_categories AS pc
JOIN patrons AS p
ON pc.id = p.category_id
LEFT JOIN checkouts AS c
ON c.actual_checkin = NULL
LEFT JOIN publication AS pub
ON c.publication_id = pub.id
GROUP BY Category
ORDER BY Category
Ich weiß nicht, was falsch ist, aber es gibt die Anzahl der Publikationen als 0, während es an diesen Förderern viele Publikationen verliehen sind. Irgendwelche Hilfe bitte. Die vollständige Datenbank mit Dummy-Daten befindet sich here.
Versuchen Sie, die 'Gruppe by' entfernen und' count' Spalten, und führe aus, was mit 'select *' übrig ist - siehst du, was du erwartest? Sobald Sie diese Abfrage richtig gemacht haben, fügen Sie einfach die Anzahl und die Gruppe nach zurück. – Blorgbeard