Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze składnią zapytania, ...nie wiem jak ułożyć
kszychu
post 17.02.2005, 11:00:06
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Jest tak, w tabeli mam wpisy dotyczące kosztów, każdy wpis ma id typu kosztu, po którym rozpoznawane jest jaki to koszt. koszty mogą być "nadpisywane", tzn nowy wpis o takim samym id typu uniewaznia stary, ale go nie usuwa.
Teraz jak wyciagnac aktualnie obowiazujace (stare nie, tylko najnowsze) koszty po jednym z kazdego typu?


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
FiDO
post 17.02.2005, 15:00:59
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Podaj strukture tabeli. Nie napisales po czym rozpoznac, ze dany koszt jest najnowszy. Przyjme w domysle, ze ten z najwiekszym ID (nie ID typu kosztu, tylko klucz podstawowy).

Wersja z subquery:
  1. SELECT *
  2. FROM koszty WHERE id IN (SELECT MAX(id)
  3. FROM koszty GROUP BY id_typu)


Werjsa bez subquery:
  1. SELECT k.*
  2. FROM koszty k
  3. LEFT JOIN koszty k2 ON (k.id_typu = k2.id_typu AND k.id < k2.id)
  4. WHERE k2.id IS NULL


Tego drugiego nie jestem do konca pewien, jeszcze nie zdazylem nabrac doswiadczenia z tym trickiem smile.gif


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
popbart
post 17.02.2005, 22:55:32
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


A jeżeli chciałbyś wyciągnąć jednocześnie pierwszy i ostatni to polecam to:
  1. SELECT substring_index(group_concat( koszt separator '|' ),'|',-1) AS ostatni,
  2. substring_index(group_concat( koszt separator '|' ),'|',1) AS pierwszy
  3. FROM koszty GROUP BY id_typu

Pzdr.

Edit---aby kogoś w błąd nie wprowadzić to poprawiam smile.gif
  1. SELECT substring_index(group_concat( koszt ORDER BY id ASC separator '|' ),'|',-1) AS ostatni,
  2. substring_index(group_concat( koszt ORDER BY id ASC separator '|' ),'|',1) AS pierwszy
  3. FROM koszty GROUP BY id_typu


Ten post edytował popbart 18.02.2005, 03:41:47


--------------------
Visual Basic - kto by pomyślał :)
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:45