Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Wyszukiwarka (Długie zapytanie SELECT + opcja BETWEEN)
Forum PHP.pl > Forum > Przedszkole
TheRiko
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?
wookieb
A jaka jest struktura tabeli z polem "data_urodzenia"? (strukture wygenerujesz za pomocą SHOW CREATE TABLE)
TheRiko
  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ąć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.