struktury tabel wyglądają następująco:
Kod
create table informacje (
id int not null primary key auto_increment,
id_grupy int( 11 ) default 0,
tytul varchar( 50 ),
tekst text,
ilosc_dni int( 11 ),
przed_po tinyint( 1 ),
jak_wyswietlic tinyint( 1 ),
data_ukazania date,
data_start_stop,
ilosc_odslon tinyint( 1 ) default 0,
aktywne tinyint( 1 ) default 0
);
create table informacje_personel (
id int not null primary key auto_increment,
id_informacji int( 11 ),
id_personelu int( 11 ),
data_odczytu datetime default '0000-00-00 00:00:00',
przeczytane tinyint( 1 ) default 0
);
id int not null primary key auto_increment,
id_grupy int( 11 ) default 0,
tytul varchar( 50 ),
tekst text,
ilosc_dni int( 11 ),
przed_po tinyint( 1 ),
jak_wyswietlic tinyint( 1 ),
data_ukazania date,
data_start_stop,
ilosc_odslon tinyint( 1 ) default 0,
aktywne tinyint( 1 ) default 0
);
create table informacje_personel (
id int not null primary key auto_increment,
id_informacji int( 11 ),
id_personelu int( 11 ),
data_odczytu datetime default '0000-00-00 00:00:00',
przeczytane tinyint( 1 ) default 0
);
Czy można za pomocą zapytania MySQL wyciągnąć te rekordy, które mieszczą się w określonym przedziale czasu, tzn.
jeśli ustawione jest wyświetlenie na 'przed' i data ukazania np. 20-11-2008 a ilość dni to np. 3 to komunikat powinien się pojawić 17-11-2008
i ten sam przykład z tym że wyświetlenie 'po' czyli powinien pojawić się 23-11-2008
mam zapytanie:
SELECT informacje.*, informacje_personel.przeczytane FROM informacje, informacje_personel WHERE informacje.id = informacje_personel.id_informacji AND informacje_personel.id_personelu = '. $UPR[ 'id_personelu' ] .' AND informacje.aktywne = 0 AND LOCALTIME BETWEEN informacje.data_start_stop AND informacje.data_ukazania OR LOCALTIME BETWEEN informacje.data_ukazania AND informacje.data_start_stop
niestety zwraca powtarzające się wyniki wtedy, próbowałem z GROUP BY na różnych polach ale nie pomogło