Seite 1 von 1

SQL problem: top 5 pro kategorie

Verfasst: 11.10.2009, 09:55
von nerd
Hallo,

ich stehe grade aufm schlauch. meine tabelle:
CREATE TABLE `links` (
`id` int(10) unsigned NOT NULL auto_increment,
`title` varchar(60) collate latin1_general_ci NOT NULL,
`url` varchar(255) collate latin1_general_ci NOT NULL,
`description` text collate latin1_general_ci NOT NULL,
`insertdate` datetime NOT NULL,
`referers` int(11) NOT NULL default '1',
`outbound` int(11) NOT NULL default '1',
`place_id` int(11) NOT NULL default '1',
`backlink` varchar(255) collate latin1_general_ci default NULL,
`admin_email` varchar(255) collate latin1_general_ci default NULL,
`status` enum('online','offline') collate latin1_general_ci default 'offline',
`category` enum('black jack', 'hookers', 'booze') collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ix_url` (`url`)
) ENGINE=MyISAM AUTO_INCREMENT=761 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
wie kann ich jetzt die top 3 (url, title) fuer jede kategorie rausbekommen?

Verfasst:
von

Verfasst: 11.10.2009, 10:44
von Synonym
Also um Dir mal etwas vom Schlauch zu helfen.
Das geht nur mit getrennten Abfragen oder eben mit Subselects.

Mit nur einer Abfrage bekommste entweder die Top 3 aus allen, oder eben alle nach Kategorien gruppiert, aber die Top 3 pro Kategorie (also 9 Datensätze) geht nicht. Dein Top3 ist ja nichts anderes als ein Limit 3. Bei 3 Kategorien wären es aber 9 Datensätze ;-)

Verfasst: 11.10.2009, 11:48
von Malte Landwehr

Code: Alles auswählen

SELECT * FROM links WHERE category = 'black jack' AND {beliebige Top 3 Bedingung};
Wobei du bei den meiste Bedingungen eher dann über UNION arbeiten solltest, wie Sortierung nach irgendwas und dann die Top x.

PS
Bitte nicht schlagen wenn ich mal wieder PostgreSQL und MySQL Befehle durcheinander werfe.