Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] Wyszukiwarka (Długie zapytanie SELECT + opcja BETWEEN)
TheRiko
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 1
Dołączył: 10.09.2006

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


Witam.

Męczę się z problemem już kilka dni i nerwy mnie zjadają, dlatego proszę o pomoc.

Posiadam 3 tabele - users, users_data, photo.
Chcę wyciągnąć id, nick, plec, date, user_last_activ, osób (zawarte w tabeli users), które: są danej płci (tabela users), są ze statusem ok (tabela users), mają zdjęcie (tabela photo) i są z danego przedziału wiekowego (tabela users_data).

Jak nie trudno się domyślić, chodzi o zwyczajną wyszukiwarkę osób o podanych parametrach. Wychodzi mi wszystko, prócz przedziału wiekowego. Oto moje zapytanie:

  1. SELECT DISTINCT u.id, u.nick, u.plec, u.date, u.user_last_activ FROM r_users u JOIN r_photo p JOIN r_users_data ud ON u.plec LIKE 'k' AND u.stat='ok' AND p.id_user=u.id

To zapytanie działa w porządku, ale jak dodam sprawdzanie wieku, tak:
  1. AND '1992-00-00'<ud.data_urodzenia AND ud.data_urodzenia<'1994-00-00'

lub tak:
  1. AND ud.data_urodzenia BETWEEN '1992-00-00' AND '1994-00-00'

to nie uwzględnia tego zapytania o wiek.

Co robię nie tak? Ma ktoś inne propozycje zapytania?

Ten post edytował TheRiko 21.02.2011, 11:49:29
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A jaka jest struktura tabeli z polem "data_urodzenia"? (strukture wygenerujesz za pomocą SHOW CREATE TABLE)


--------------------
Go to the top of the page
+Quote Post
TheRiko
post
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 1
Dołączył: 10.09.2006

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


  1. CREATE TABLE `r_users_data` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT,
  3. `id_user` int(16) NOT NULL DEFAULT '0',
  4. `imie` varchar(16) character SET latin2 collate latin2_bin NOT NULL DEFAULT '',
  5. `kraj` varchar(16) character SET latin2 collate latin2_bin NOT NULL DEFAULT '',
  6. `wojewodztwo` varchar(32) character SET latin2 collate latin2_bin NOT NULL DEFAULT '',
  7. `miejscowosc` varchar(32) character SET latin2 collate latin2_bin NOT NULL DEFAULT '',
  8. `data_urodzenia` date NOT NULL DEFAULT '0000-00-00',
  9. `tel` int(9) NOT NULL,
  10. `www` varchar(100) character SET latin2 collate latin2_bin NOT NULL,
  11. `gg` varchar(15) character SET latin2 collate latin2_bin NOT NULL,
  12. `skype` varchar(30) character SET latin2 collate latin2_bin NOT NULL,
  13. `facebook` varchar(100) character SET latin2 collate latin2_bin NOT NULL,
  14. `last_update` datetime NOT NULL,
  15. `stat` varchar(8) character SET latin2 collate latin2_bin NOT NULL,
  16. PRIMARY KEY (`id`),
  17. KEY `id_user` (`id_user`)
  18. ) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=latin2



EDIT

Poradziłem sobie na innym forum, temat można zamknąć.

Ten post edytował TheRiko 26.02.2011, 16:41:30
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 12:29