Witam mam tabele zdjęcia w której jest klucz obcy do kolumny z tabeli folder. Chciałbym wyświetlić dane dotyczące folderów należących do danego usera: dane folderu, ilość plików z nim powiązanych oraz ich wagą. Moje próby wyglądają następująco:
SELECT *, (SELECT COUNT(id) AS x FROM zdjecia z WHERE folder_dir = k.id) AS ile, (SELECT SUM(rozmiar) AS x FROM zdjecia z WHERE folder_dir = k.id) AS rozmiar
FROM katalogi k WHERE k.id_uzytkownik = 1;
SELECT k.*, folder_dir,COUNT(z.id) AS x, sum(z.rozmiar) AS y FROM zdjecia z INNER JOIN katalogi k ON k.id = z.folder_dir WHERE NOT folder_dir IS NULL AND z.id_uzytkownik = 1 GROUP BY folder_dir;
CREATE TABLE IF NOT EXISTS `zdjecia` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`nazwa` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`data_dodania` datetime NOT NULL,
`opis` varchar(400) COLLATE utf8_unicode_ci DEFAULT NULL,
`folder_dir` int(10) UNSIGNED DEFAULT NULL,
`glosy` int(10) UNSIGNED NOT NULL,
`ilosc_glosow` int(10) UNSIGNED NOT NULL,
`id_kategoria` int(10) UNSIGNED NOT NULL,
`nazwa_url` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`rozmiar` int(10) UNSIGNED NOT NULL,
`id_uzytkownik` int(10) UNSIGNED NOT NULL,
`rozdzielczosc` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_zdjeca_1` (`id_kategoria`) USING BTREE,
KEY `FK_zdjecia_2` (`id_uzytkownik`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `katalogi` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`nazwa` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`nazwa_url` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`id_uzytkownik` int(10) UNSIGNED NOT NULL,
`data` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_katalogi_1` (`id_uzytkownik`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=19 ;
Z obu rozwiązań nie jestem zadowolony. Pewnie da się to zrobić lepiej. Z góry dzięki za odpowiedzi
Ten post edytował kask18 18.11.2010, 17:44:44