Ben al heel de dag aan het kloten om een listing van de laatste berichten per type te maken.
stel je hebt tabel cms_content:
Nu kun je natuurlijk doen:
Dit werkt prima voor één enkel type. Maar ik wil de laatste twee berichten per (opgegeven) type. Aangezien subqueries al werken (versie 4.1 dacht ik) probeer ik:
Dit is dus uit te breiden door meerderen IN()'s te gebruiken.
Dit werkt, nu ff de limit erin en klaar:
Probleem
Dit werkt dus niet in deze versie van MySql (MySQL 4.1.10a-nt). Ik krijg de melding:
Oftewel die truc gaat niet op. Nu heb ik echter geen enkel idee hoe ik dit wel kan oplossen. Iemand een idee?
ter info
MySQL 4.1.10a-nt
Examples van MySql: http://dev.mysql.com/doc/mysql/en/examples.html bieden geen uitkomt.
stel je hebt tabel cms_content:
| CmsContentId | CmsContentTitle | CmsContentBody | CmsContentDatetime | CmsContentType |
| 1 | nieuws 1 | eerste nieuws | 2005-08-31 22:06:10 | 1 |
| 2 | nieuws 2 | tweede nieuws | 2005-08-31 22:06:43 | 1 |
| 3 | product 1 | eerste product | 2005-08-31 22:07:23 | 2 |
| 4 | nieuws 3 | derde nieuws | 2005-08-31 22:09:55 | 1 |
| 5 | product 2 | tweede product | 2005-08-31 22:10:13 | 2 |
| 6 | product 3 | derde product | 2005-08-31 22:10:49 | 2 |
Nu kun je natuurlijk doen:
code:
1
2
3
4
5
| SELECT * FROM cms_content WHERE CmsContentType = 1 ORDER BY CmsContentDatetime DESC LIMIT 0 , 2 |
Dit werkt prima voor één enkel type. Maar ik wil de laatste twee berichten per (opgegeven) type. Aangezien subqueries al werken (versie 4.1 dacht ik) probeer ik:
code:
1
2
3
4
5
6
7
8
9
10
11
| SELECT * FROM `cms_content` WHERE `CmsContentId` IN ( SELECT `CmsContentId` FROM cms_content WHERE `CmsContentType` =1 ORDER BY `CmsContentDatetime` DESC ) ORDER BY `CmsContentType` , `CmsContentDatetime` DESC |
Dit is dus uit te breiden door meerderen IN()'s te gebruiken.
Dit werkt, nu ff de limit erin en klaar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT * FROM `cms_content` WHERE `CmsContentId` IN ( SELECT `CmsContentId` FROM cms_content WHERE `CmsContentType` =1 ORDER BY `CmsContentDatetime` DESC LIMIT 0 , 2 ) ORDER BY `CmsContentType` , `CmsContentDatetime` DESC |
Probleem
Dit werkt dus niet in deze versie van MySql (MySQL 4.1.10a-nt). Ik krijg de melding:
code:
1
2
| MySQL retourneerde: Documentatie #1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' |
Oftewel die truc gaat niet op. Nu heb ik echter geen enkel idee hoe ik dit wel kan oplossen. Iemand een idee?
ter info
MySQL 4.1.10a-nt
Examples van MySql: http://dev.mysql.com/doc/mysql/en/examples.html bieden geen uitkomt.
[ Voor 6% gewijzigd door Verwijderd op 31-08-2005 23:49 ]