Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie skorelowane, mysql nie obsługuje, czy da się to zastąpić innym zapytaniem ?
atay
post 8.11.2009, 11:18:59
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 8.10.2003

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


mam 2 tabele

users
login: varchar(255)
punkty: int

status:
nazwa: varchar(255)
prog: int

teraz chciałbym wykonać zapytanie
SELECT * FROM users
LEFT JOIN (SELECT nazwa FROM status WHERE users.punkty>status.prog ORDER BY prog LIMIT 1) s ON 1

czyli wykonać zapytanie skorelowane, tak żeby w tabeli users pokazało mi jaki status ma użytkownik, status zależny jest od ilości punktów.
Tabela status zawiera progi np.
raczkujący : 0
pisarz : 100
demon : 1000

Czy da się w mysql napisać jedno zapytanie, żeby to zrealizować ?


--------------------
atay
Go to the top of the page
+Quote Post
erix
post 8.11.2009, 13:37:37
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie chodzi Ci przypadkiem o użycie dodatkowego pola ustalanego przez CASE?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
atay
post 8.11.2009, 14:01:57
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 8.10.2003

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


no właśnie nie, bo w CASE z góry masz określoną ilość pól, a mi zależy na tym, żeby statusy były w tabeli i mogły być dowolnie zmieniane.

dla większej jasności jeszcze, przykładowe dane
tabela users:
imie - punkty:
Karol - 700
Józef - 1300
Stefan - 2200

status:
nazwa - prog
raczkujący - 0
pisacz - 1000
zaawansowany - 2000

i wynikowo chciałbym dostać
Karol - 700 - raczkujący
Józef - 1300 - pisacz
Stefan - 2200 - zaawansowany


--------------------
atay
Go to the top of the page
+Quote Post
erix
post 10.11.2009, 13:42:18
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




[sql]JOIN LEFT[sql] + warunek uzależniony od kolumny. IMHO najlepiej byłoby tu dodać pomocniczą kolumnę, która by przechowywała początek zakresu, a nie tylko koniec, tj:
  • 0, 100
  • 100, 2000

i tak dalej, ale z tym już sobie powinieneś poradzić.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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 Wersja Lo-Fi Aktualny czas: 27.06.2025 - 04:53