Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobranie z bazy (z dwóch tabel!) danych według daty
miedzna
post
Post #1





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mam w bazie 2 tabeli:

  1. CREATE TABLE `tabela_jeden` (
  2. `id_jeden` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_dwa` int(11) NOT NULL,
  4. `nr_ew` char(17) NOT NULL,
  5. PRIMARY KEY (`id_jeden`,`id_dwa`)
  6. );


oraz tabela:

  1. CREATE TABLE `tabela_dwa` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_dwa` int(11) NOT NULL,
  4. `ostatniPunkt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  5. PRIMARY KEY (`id`,`dane_uczestnika_id`)
  6. );


Chcę pobrać dane z tabeli "tabela_jeden", ale pod warunkiem, że pola "id_dwa" są równe w obu tabelach, a dodatkowy warunek, że pole "ostatniPunkt" (zawiera dane w formacie np 2008-01-02 08:23:18) nie jest starszy niż np jakaś tam data.

Robię coś takiego:

SELECT pz.id_jeden, pz.nr_ew FROM polec_zaplaty pz, punktacja p WHERE pz.id_dwa = p.id_dwa AND UNIX_TIMESTAMP(p.ostatniPunkt) <= UNIX_TIMESTAMP('2007-12-22 21:56:12') ORDER BY pz.id_jeden

... i zwraca mi wszystkie rekordy z bazy, jak próbuję zmieniać datę, to nic z tego (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

gdzie jest błąd?

Ten post edytował miedzna 3.01.2008, 14:57:44
Go to the top of the page
+Quote Post
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(miedzna @ 3.01.2008, 14:56:46 ) *
Robię coś takiego:

  1. SELECT pz.id_jeden, pz.nr_ew FROM polec_zaplaty pz, punktacja p WHERE pz.id_dwa = p.id_dwa AND UNIX_TIMESTAMP(p.ostatniPunkt) <= UNIX_TIMESTAMP('2007-12-22 21:56:12') ORDER BY pz.id_jeden


generalnie zakładając, że polec_zaplaty to tabela_jeden i punktacja to tabela_dwa to wszystko jest w porządku. Jeśli zwraca Ci wszystkie rekordy z bazy to oznacza, że wszystkie spełniają warunek zapytania...
Go to the top of the page
+Quote Post
miedzna
post
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


O to chodzi, że nie wszystkie, są bardzo różne daty z kilkumiesięcznymi odstępami, więc jak zmieniam datę, to ciągle jest taka sama liczba rekordów. Podejrzewam, że chodzi o UNIX_TIMESTAMP i format zapisu daty '2007-12-22 21:56:12', coś tu moim zdaniem nie gra, ale nie wiem co.
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


hmm, w zasadzie jeśli chcesz tylko porównać daty to nie musisz używać UNIX_TIMESTAMP, lub ewentualnie możesz sprawdzać tylko te, które mają daty (nie wiem czy jest Ci to potrzebne), na końcu możesz trochę zmienić zapytanie (kolejność warunków, choć nie wiem gdzie ile będzie danych)

sprawdź jak Ci pójdzie to:

  1. SELECT pz.id_jeden, pz.nr_ew
  2. FROM polec_zaplaty pz, punktacja p
  3. WHERE p.ostatniPunkt <> '' AND p.ostatniPunkt IS NOT NULL AND p.ostatniPunkt <= '2007-12-22 21:56:12' AND p.id_dwa = pz.id_dwa
  4. ORDER BY pz.id_jeden


w zasadzie również powinno zadziałać
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 23:03