![]() |
![]() ![]() |
![]() |
![]()
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:
Zmienne $n,$i itd. to dane z formularza przesyłane postem. Jeśli to lamerskie pytanie to sory ![]() Z góry dzięki za pomoc ![]() ------------------------ Edit: zapomniałem dodać, że chciałbym to zrobić jednym zapytaniem ![]() Ten post edytował revyag 24.06.2005, 11:00:35 -------------------- -------------
------ |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
Cytat 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.
Przydałyby się tabele:lang(id,nazwa) i level(id,poziom int,nazwa) pole "poziom int" by się przydało do zapytań typu: " kto zna niemiecki dobrze lub lepiej a angielski dobrze lub gorzej ". Cytat 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. To już zadanie dla php aby odpowiednio przygotowało zapytanie. Pzdr -------------------- Visual Basic - kto by pomyślał :)
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Hej. Dzięki za odpowiedź, ale to nie działa tak jakbym chciał. Wyszukiwane są osoby, które umieją albo angielski albo niemiecki, a muszą być wyszukane te które umieją obydwa te języki.
Być może źle stosuję przykład który podałeś. Nie jestem ekspertem w bazach i nie wiem co ma dać ten fragment:
Poza tym czy mogę użyć tego w zapytaniu w którym odwołuję się do kilku tabel ? Jeśli tak, to gdzie mam tą klauzulę umieścić ? -------------------- -------------
------ |
|
|
![]() ![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie chcę się tam zbyt wymądrzać, ale moim skromnym zdaniem to powinno być chyba tak...
Ale nie jestem pewien. ![]() -------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie. To zapytanie nie zwraca żadnych rekordów.
-------------------- -------------
------ |
|
|
![]() ![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A powinno.
![]() Już chyba wiem w czym błąd. Ale nie pamiętam jak to się robiło. Ten post edytował Kas 27.06.2005, 09:21:31 -------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]() ![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 13.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
a nie prosciej by Ci bylo przerobic strukture tabel?
![]() Ten post edytował brachu 27.06.2005, 12:32:46 -------------------- www.tanieprogramy.edu.pl
www.zamkor.pl |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Wydawało mi się że jest to w miarę prosto zrobione. Jeśli masz jakieś propozycję to proszę. Samo powiedzenie że coś jest be mi nie pomoże
![]() -------------------- -------------
------ |
|
|
![]() ![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 13.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
hmmm no trzeba by sie zastanowic wlasnie jak pozniej bedzie latwo odczytac dane z tabeli.... jezeli tych jezykow nie jest zbyt duzo to proponowalbym dac w tabeli user_langs kazdy jezyk jako osobna kolumne - a wartosciami w tej kolumnie bylaby informacja na jakim poziomie uzytkownik zna ten jezyk
![]() edyt.1 mozna zrobic jeszcze inaczej ze kazdy jezyk bedzie mial osobna tabele i tam beda wartosci jak kto zna dany jezyk ![]() pozdrawiam Ten post edytował brachu 27.06.2005, 12:45:13 -------------------- www.tanieprogramy.edu.pl
www.zamkor.pl |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
1. Rozwiązanie pierwsze odpada, bo liczba języków nie może być ustalona z góry, jest zależna od tego ile user ich poda.
2. Rozwiązanie drugie też nie za bardzo będzie sią dało wprowadzić. Dlaczego ? Patrz punkt1, ilość języków nie może być ustalona. Problem sprowadza się do jednej rzeczy: czy da się wyciągnąć z tabeli tylko te wiersze, które odpowiadają dwóm lub więcej kryteriom ? Tutaj tymi kryteriami są języki. -------------------- -------------
------ |
|
|
![]() ![]()
Post
#11
|
|
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
![]() mi to dziala ![]() edyt.1 a odnosnie klauzuli: 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 ![]() pozdrawiam Ten post edytował brachu 27.06.2005, 14:04:45 -------------------- www.tanieprogramy.edu.pl
www.zamkor.pl |
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Sprawdziłem no i rzeczywiście to jest to co chcę osiągnąć
![]() Muszę to teraz wpasować w moje zapytanie operujace na kilku tabelach. Dzięki za pomoc ![]() -------------------- -------------
------ |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
Moje zapytanie może nie działać tylko w jednym wypadku:
jeżeli user ma dwa lub więcej wpisy dla jednego języka (angielski,dobrze)(angielski,podstawowy). -------------------- Visual Basic - kto by pomyślał :)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:05 |