Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] ORDER BY i INNER JOIN
Forum PHP.pl > Forum > Przedszkole
mlawnik
Witam,

mam zapytanie do bazy danych:

  1. SELECT *
  2. FROM `grades`
  3. INNER JOIN `subjects`
  4. ON grades.subjectId = subjects.subjectId
  5. WHERE userId = '1'
  6. ORDER BY 'gradeValue' DESC


Zapytanie wykonuje się, natoniast wyniki od góry w kolumnie gradeValue to:
5,
6,
6,
3,5,
4,5 itd.

Dlaczego tak się dzieje? Czy ktoś mógłby mnie nakierować?

Pozdrawiam,
mlawnik
in5ane
Próbowałeś kombinować coś w ten sposób?
  1. SELECT *
  2. FROM `grades` AS asd
  3. INNER JOIN `subjects`
  4. ON grades.subjectId = subjects.subjectId
  5. WHERE userId = '1'
  6. ORDER BY 'asd.gradeValue' DESC
mlawnik
EDIT:

Dobra problem rozwiązany.
Dla potomnych:

Jeżeli chcemy, aby zapytanie z inner join zostało posortowane, oprócz kolumny należy określić tabelę:

  1. SELECT *
  2. FROM `grades`
  3. INNER JOIN `subjects`
  4. ON grades.subjectId = subjects.subjectId
  5. WHERE userId = '1'
  6. ORDER BY grades.gradeValue DESC


EDIT 2:
Dzięki in5ane, wpadłem na to w tej samej chwili. W sumie stackoverflow twoim przyjacielem tongue.gif Pomógł leci.
mmmmmmm
Dla potomnych:
NIGDY NIE DAJEMY NAZWY KOLUMNY DO SORTOWANIA W APOSTROFACH. (i to był twój błąd)
Bo te oznaczają tekst. Więc dla każdego rekordu brana była wartość 'gradeValue' (ten tekst) i porównywana do tekstu 'gradeValue' z poprzedniego rekordu...
Nie musimy kolumny prefiksować nazwą tabeli, o ile jest ona unikalna w ramach tabel (podselektów), z których korzystamy. Dopiero, gdy nazwy kolumn się powtarzają to nalezy prefiksować. Zarówno w SELECT, ORDER BY, jak i we WHERE.
Dodatkowo w MySQL przy ORDER BY trzeba pamiętać, że sortuje wg nazw kolumn zwracanych.
Czyli np. SELECT Abs(liczba) As liczba FROM tabela ORDER BY liczba
w rzeczywistości posortuje po Abs(liczba)
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.