Ég er sem sagt að vinna með smá MySQL gagnagrunn.
Ég er með töflu sem geymir prófíla (profiles) og töflu sem geymir pósta á spjallþráðum (discussion_posts).

Uppbygging taflanna (það sem skiptir máli):
-- 
-- Table structure for table `discussion_posts`
-- 
CREATE TABLE IF NOT EXISTS `discussion_posts` (
  `ID` int(11) NOT NULL auto_increment,
  `tID` int(11) NOT NULL default '0',
  `bID` int(11) NOT NULL default '0',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `uID` smallint(5) NOT NULL default '0',
  PRIMARY KEY  (`ID`),
  KEY `uID` (`uID`)
) TYPE=MyISAM AUTO_INCREMENT=9127 ;
-- 
-- Table structure for table `profiles`
-- 
CREATE TABLE IF NOT EXISTS `profiles` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(20) NOT NULL default '',
  `kt` varchar(10) NOT NULL default '',
  `name` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`ID`),
  KEY `nefnd` (`nefnd`),
  KEY `kt` (`kt`)
) TYPE=MyISAM AUTO_INCREMENT=259 ;

Fyrirspurnin sem ég er að gera (og á í smá ‘vandræðum’ með) á svo að sækja topp 3 lista yfir þá sem hafa flest innlegg síðasta mánuðinn.
Uppá einfeldnis sakir vil ég bara hafa þetta eina SQL fyrirspurn (sem þarf ekkert að vinna frekar með) og það sem ég á í mestum vandræðum með er skilyrðin sem segja ‘í þessum mánuði’.

Það sem ég er með er svona (og það virkar):
SELECT
	p.id AS `uid`,
	p.name AS `name`,
	COUNT(dp.id) AS `count`
FROM
	`profiles` AS `p`
	LEFT JOIN `discussion_posts` AS `dp` ON dp.uid = p.id
WHERE
	dp.bID = 1
AND
	[b]MONTH( dp.date ) BETWEEN MONTH( NOW() )-1 AND MONTH( NOW() )
AND
	YEAR( dp.date ) = YEAR( NOW() )[/b]
GROUP BY
	p.id
ORDER BY
	`count` DESC
LIMIT
	0,3
Þetta feitletraða virkar sem sagt til að segja ‘í þessum mánuði’ en ég er fullviss um að þetta sé hægt að gera með einu skilyrði en ekki tveimur.

Er ekki einhver hérna sem er góður í að vinna með dagsetningar í SQL (því ég sökka í því)?
“If it isn't documented, it doesn't exist”