CREATE TABLE IF NOT EXISTS `linki` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `grupyid` int(10) UNSIGNED NOT NULL, `url` varchar(255) NOT NULL, `data_pobrania` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2 ;
+---+-+------------------+--------------------------+
|120|1|www.link1.pl |2012-06-01 00:00:00 |
|121|1|www.link2.pl |2012-04-01 00:00:00 |
|122|1|www.link3.pl |2012-03-01 00:00:00 |
|123|2|www.linkowy1.pl|2012-06-01 00:00:00 |
|124|2|www.linkowy3.pl|2012-04-01 00:00:00 |
|125|2|www.linkowy2.pl|2012-03-01 00:00:00 |
+---+-+------------------+--------------------------+
CREATE TABLE IF NOT EXISTS `grupy_link` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `tytul` varchar(255) NOT NULL, `title` text NOT NULL, `pobrano` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `aktywny` enum('yes','no') NOT NULL DEFAULT 'yes', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2
+---+-+------------------+--------------------------+----+
|215|1|Tytuł grupy 1 |2012-06-01 00:00:00 |yes |
|216|2|Tytuł grupy 2 |2012-04-01 00:00:00 |yes |
|217|2|Tytuł grupy 3 |2012-03-01 00:00:00 |no |
+---+-+------------------+--------------------------+----+
SELECT grupy.title, linki.url FROM linki LEFT JOIN (SELECT id, title FROM grupy_link WHERE aktywny='yes' ORDER BY pobrano ASC) grupy ON grupy.id=linki.grupyid ORDER BY data_pobrania ASC
I chce pobrać najpierw z `grupy_link` najstarszą datę(pobrano) i następnie do tej grupy dobrać jednego linka dla tej grupy.
+-------tytul-----+------url--------------+-------pobrano----------+--data_pobrania------+
|Tytuł grupy id 2|www.linkowy2.pl | 2012-04-01 00:00:00 | 2012-03-01 00:00:00|
|Tytuł grupy id 1|www.link3.pl |2012-06-01 00:00:00 | 2012-03-01 00:00:00|
+-----------------+------------------------+-------------------------+-------------------------+