Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> najwyższa wartość dla danego user_id
omj
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 17.04.2003

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


Witam,
mam takie zapytanie:
  1. SELECT
  2. members.id, members.name, members.lastname, payments.id, payments.user_id, payments.begin_date, payments.finish_date, payments.price
  3. FROM members, payments
  4. WHERE members.id=payments.user_id
  5. AND payments.finish_date>=CURDATE()
  6. ORDER BY payments.finish_date
  7. ASC, payments.id ASC

jak to przerobić aby zapytanie pobierało tylko wiersz tabeli gdzie jest najwyższe finish_date dla user_id?

W tej chwili pobiera mi wszystkie wpisy dla user_id, które mają finish_date większą od CURDATE(), a bym chciał aby pobierało tylko ostatnio dodany wpis czyli chyba ten z największą finish_date.

Jakby ktoś był tak miły i pomógł to będę wdzięczny :-)

Ten post edytował omj 15.11.2013, 23:18:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
werdan
post
Post #2





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

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


Dodaj LIMIT 1 i posortuj DESC
Go to the top of the page
+Quote Post
omj
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 17.04.2003

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


Chodzi o pobranie Max(finish_date) group by user_id.
Czyli chodzi mi o pobranie wszystkich klientow, ktorym nie skonczyl sie czas. Niektorzy zaplacili przed koncem poprzedniego okresu i sa wyswietlani dwaxrazy.
Imo nie wiem jak to zapytanie przerobic.
Go to the top of the page
+Quote Post
werdan
post
Post #4





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

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


Tu znajdziesz pare rozwiazań podobnego problemu:
http://stackoverflow.com/questions/1358278...similar-entries
Go to the top of the page
+Quote Post
omj
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 17.04.2003

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


Dziękuję piknie.

Wygląda na to, że działa mi takie zapytanie:
  1. SELECT
  2. members.id, members.name, members.lastname
  3. FROM members
  4. JOIN
  5. (
  6. SELECT payments.id, payments.user_id, payments.begin_date, MAX(payments.finish_date) AS finish_date, payments.price
  7. FROM payments
  8. GROUP BY payments.user_id
  9. )
  10. AS payments
  11. WHERE members.id=payments.user_id AND payments.finish_date>=CURDATE() ORDER BY payments.finish_date ASC, payments.id ASC

ale, dane z tabeli payments nie są zwracane, np kod:
  1. echo stripslashes($wiersz['begin_date']);

nie wyświetla mi wartości.
Czy może ktoś mi podpowiedzieć co robię nie tak?
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




W select mowisz, ze zapytanie ma zwracac tylko takie kolumny:
members.id, members.name, members.lastname

a potem w php nie z gruszki ni z pietruszki probujesz pobrac begin_date :/


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
omj
post
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 17.04.2003

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


Cytat(nospor @ 18.11.2013, 16:20:10 ) *
W select mowisz, ze zapytanie ma zwracac tylko takie kolumny:
members.id, members.name, members.lastname

a potem w php nie z gruszki ni z pietruszki probujesz pobrac begin_date :/

a wiesz może jak to zapisać coby zapytanie zwróciło te wartości? :-)
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 Aktualny czas: 21.08.2025 - 10:38