Scusa se rispondo ora, ma sono stato fuori in questi giorni.
La struttura della prima tabella è questa
codice:
CREATE TABLE `my_tab` (
`eid` mediumint(8) unsigned NOT NULL auto_increment,
`nome` varchar(255) NOT NULL,
`mail_e` varchar(255) NOT NULL,
`tipo` varchar(255) NOT NULL,
`icona` varchar(50) NOT NULL,
`data_dal` date default NULL,
`data_al` date default NULL,
`ev_dal` date default NULL,
`ev_al` date default NULL,
`coming` longtext NOT NULL,
`home` varchar(255) NOT NULL,
`enable` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`eid`),
FULLTEXT KEY `nome_2` (`nome`,`home`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
e la struttura della seconda tabella è questa
codice:
CREATE TABLE `my_cat` (
`ceid` mediumint(5) unsigned NOT NULL auto_increment,
`nome` varchar(100) NOT NULL,
`eid` mediumint(8) unsigned NOT NULL,
`colore` varchar(7) NOT NULL,
`private` tinyint(3) unsigned NOT NULL default '0',
`d_ini` date NOT NULL,
`d_fine` date NOT NULL,
`enable` tinyint(4) NOT NULL default '1',
`desc` varchar(255) NOT NULL,
`logo` varchar(100) NOT NULL,
`genere` varchar(100) NOT NULL,
PRIMARY KEY (`ceid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
i campi che sono in relazione si chiamano eid in tutte e due le tabelle, un record della prima tabella può avere in relazione più record della seconda.
Io vorrei estrarre tutti i valori della prima tabella e tutti i valori della seconda tabella, i cui campi ev_dal,ev_al per la prima e d_ini,d_fine per la seconda sono compresi tra una precisa data e siano diversi da zero. io ho fatto una query in questo modo, ma non funziona a dovere, in pratica mi tira fuori dei valori che non sono compresi in quella precisa data
codice:
SELECT e.eid AS eid, c.eid AS eid_c FROM my_tab AS e,my_cat AS c WHERE e.enable=1 AND e.tipo='Pubblico' AND c.enable=1 AND (((e.ev_dal<='2008-12-06' AND '2008-12-06'<=e.ev_al) OR (c.d_ini<='2008-12-06' OR '2008-12-06'<=c.d_fine)) AND c.d_ini>'0000-00-00' AND e.ev_dal>'0000-00-00') HAVING eid=eid_c ORDER BY c.d_ini,e.ev_dal DESC