Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapytaniem, wyszukiwanie
revyag
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Witam.

Mam dwie tabelki:

users:
Kod
-----------------------------------------------
id | nazwisko | imie  | wiek   | adres    |
----------------------------------------------
1  | Kowalski | Jan   |  45    | cos tam  |
2  | Nowak    | Adam  |  35    | cos tam  |
------------------------------------------------

user_langs:
Kod
-----------------------------------------
id | uid  | lang      | level      |
------------------------------------------
1  |  1   | angielski | biegły     |
2  |  1   | niemiecki | dobry      |
3  |  1   | rosyjski  | podstawowy |
4  |  2   | angielski | dobry      |

Powiązane są poprzez id z tabeli gównej które jest kluczem obcym w user_langs (uid).
Mam kłopot ze skonstruowaniem zapytania które będzie wyszukiwało dane.
Jeśli chcę wyciągnąć userów, którzy umieją po jednym języku na odpowiednim poziomie to jest ok, ale nie wiem jaką postać ma mieć zapytanie jeśli chcę pobrać z bazy userów którzy umieją np. język angielski i niemiecki na określonych poziomach.
Poza tym przy wyszukiwaniu języki mogą nie być określone czyli, mogą być wyszukiwani userzy bez kryteriów nałożonych na język.
Dla jednego lub nieokreślonego(wszystkie) języka wymyśliłem coś takiego:
  1. <?php
  2.  
  3. $query = &#092;"select distinct u.id,u.nazwisko,u.imie,u.adres,u.wiek from users as u,user_
    l
  4. ngs as ul
  5. where
  6. u.nazwisko like '%$n%' and u.imie like '%$i%' and u.adres like '%$a%' and u.wiek like '%$w%' and
  7. ul.lang like '%$l%'and ul.level like '%$ll%' and u.id = ul.uid&#092;"; 
  8.  
  9. ?>

Zmienne $n,$i itd. to dane z formularza przesyłane postem.
Jeśli to lamerskie pytanie to sory (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Z góry dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
------------------------
Edit:
zapomniałem dodać, że chciałbym to zrobić jednym zapytaniem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował revyag 24.06.2005, 11:00:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
brachu
post
Post #2





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 13.04.2005

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


kurde poszperalem posiedzialem i chyba wymyslilem jak zrobic to zapytanie - a konkretniej jak przerobic zapytanie @popbart i zadzialalo mi co najwazniejsze (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  1. SELECT DISTINCT(uid)
  2. FROM `user_langs` WHERE (lang='angielski' AND level='biegly') OR (lang='niemiecki' AND level='podstawowy') GROUP BY uid HAVING count(uid)>=2
mi to dziala (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

edyt.1

a odnosnie klauzuli:
  1. GROUP BY uid HAVING count(uid)>=2
to grupuje ona po uid i umozliwia zastosowanie count(uid)>=2 czyli przekladajac z polskiego na naski to zapytanie ma postac: jezeli znajdziesz rekordy z jezykiem angielskim w poziomie bieglym lub jezykiem niemickiem w poziomie podstawowym i tych rekordow bedzie conajmniej dwa to zwroc wartosc uid (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

pozdrawiam

Ten post edytował brachu 27.06.2005, 14:04:45
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 15:05