Zapewne popełniam oczywisty dla wielu błąd, ale jakoś nie mogę się przez to przebić...
Chodzi o to aby z trzech tabel wybrać różne rekordy, przy czym z dwóch tabel chcę tylko zliczyć odpowiednie. Zapytanie które stworzyłem zwraca chyba iloczyn kartezjański dla COUNT'ów. (Gdy robię COUNT tylko dla jednej dodatkowej tabeli po JOIN to działa jak należy)
Aktualne zapytanie:
SELECT COUNT(i.img_id) as ile_postow, COUNT(c.com_id) as ile_komentarzy, user, register, last
FROM users u
JOIN images i ON i.author=u.id
JOIN comments c ON c.author=u.id
WHERE u.id=1
Struktura tabel:
CREATE TABLE IF NOT EXISTS `comments` (
`com_id` int(11) NOT NULL AUTO_INCREMENT,
`author` int(11) NOT NULL,
`post` int(11) NOT NULL,
`com` varchar(2048) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`com_id`),
KEY `author` (`author`),
KEY `post` (`post`)
)
CREATE TABLE IF NOT EXISTS `images` (
`img_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
`title` varchar(32) NOT NULL,
`descr` varchar(64) NOT NULL,
`datetime` datetime NOT NULL,
`onmain` datetime NOT NULL,
`author` int(11) NOT NULL,
`main` tinyint(1) NOT NULL,
PRIMARY KEY (`img_id`),
KEY `author` (`author`)
)
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(16) NOT NULL,
`pass` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`register` datetime NOT NULL,
`last` datetime DEFAULT NULL,
`isAdmin` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
)