Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Największa wartość kolumny w danym wierszu, jak?
Forum PHP.pl > Forum > Przedszkole
kondor
Witam Was,

Może jest to banalnie proste, ale siedzę od wczoraj i już ledwo widzę na oczy i już nie jestem w stanie sam sobie pomóc.

Pytanie mam następujące:
Jak wyciągnąć największą wartość kolumny z danego wiersza?
Mam wiersz: id, pole1=2, pole2=5, pole3=4, pole4=10, pole5=20 . Tych kolumn jest oczywiście więcej, ale to nie ma znaczenia.
Chciałbym aby zapytanie mysql zwróciło mi największą wartość czyli informację, że pole5 jest największe.
Jak to zrobić?

Bardzo tego potrzebuję ponieważ mam bazę filmów, każdy z nich oceniony w wielu elementach i potrzebuje nawiększy element aby informować, że ten film to zdaniem ludzi np. komedia.

Będę bardzo wdzięczny za pomoc.

pozdrawiam,
Konrad
phpion
GREATEST
kondor
Dziękuje za odpowiedź i pomoc, ale nie dokładnie o to mi chodziło.
GREATEST zwraca mi wartość danego pola - w moim przypadku wynik zapytania to 20, ale nadal nie wiem, które pole ma te wartość a jest mi to niezbędne.
Są jakieś inne sposoby.
Ważne jest dla mnie aby wynikiem zapytania była nazwa kolumny/pola z największą wartością a nie sama wartość.

Nikt nie jest w stanie mi pomóc?
nospor
  1. SELECT * FROM tabela WHERE pole = (SELECT MAX(pole) FROM tabela)

kondor
Cytat(nospor @ 5.08.2010, 10:57:46 ) *
  1. SELECT * FROM tabela WHERE pole = (SELECT MAX(pole) FROM tabela)



Też nie o to chodzi (albo coś źle robię). W tym wypadku pól wśród których szukam maxa jest 5 więc nie da się w ten sposób z nich wybrać.
Na chłopski rozum powinno być tak, że każę mu z wiersza o id=1 pobrać kolumny pole1, pole2, pole3, pole4, pole5 a następnie z tych kolumn wybrać tę o największej wartości i wypisać najlepiej : pole4=>20

I za nic nie wiem jak to zrobić.
nospor
Przepraszam, nie doczytałem dokładnie i myślałem że mówisz o rekordach.

Mam ale hardcore (dla 3 pol)
  1. SELECT GREATEST(pole1,pole2,pole3) , IF(pole1=GREATEST(pole1,pole2,pole3),'pole1',IF(pole2=GREATEST(pole1,pole2,pole3),'pole2','pole3')) FROM tabela

smile.gif

A nie prosciej ci w mysql pobrać te max i w php porównac? zakladam ze i tak to bedziesz w php obrabiał
kondor
No faktycznie hardcore bo tych pól mam więcej znacznie smile.gif

Myślałem, że da się to jakoś łatwo w mysql załatwić, ale nie dałem rady.
Z pomocą oczywiście przyszło PHP i tablice - w skrócie - najpierw max() a potem przyrównanie każdego pola do tego maxa. W ten sposób wyciągam nazwę i wartość.

Dziękuję Wam za pomoc i idę spać smile.gif
erix
A nie lepiej byłoby tu skorzystać z modelu relacyjnego, zamiast upychać w kolumnach?
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.