Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie skorelowane, mysql nie obsługuje
Forum PHP.pl > Forum > Bazy danych
atay
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ć ?
erix
A nie chodzi Ci przypadkiem o użycie dodatkowego pola ustalanego przez CASE?
atay
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
erix
[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ć.
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.