Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Największa wartość kolumny w danym wierszu, jak?
kondor
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 26.09.2005

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


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
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




GREATEST
Go to the top of the page
+Quote Post
kondor
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 26.09.2005

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


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?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




  1. SELECT * FROM tabela WHERE pole = (SELECT MAX(pole) FROM tabela)

Go to the top of the page
+Quote Post
kondor
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 26.09.2005

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


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ć.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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

(IMG:style_emoticons/default/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ł
Go to the top of the page
+Quote Post
kondor
post
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 26.09.2005

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


No faktycznie hardcore bo tych pól mam więcej znacznie (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
erix
post
Post #8





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




A nie lepiej byłoby tu skorzystać z modelu relacyjnego, zamiast upychać w kolumnach?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.01.2026 - 17:36