• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Select - uzyskanie najmłodszego rekordu

Object Storage Arubacloud
0 głosów
587 wizyt
pytanie zadane 27 czerwca 2016 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)

Cześć.

Mam takie zapytanie:

select
    opiekun_kh_nr as kh_nr, opiekuni_nazwa as opiekun_nazwa, opiekun_kh_op_idx, opiekun_kh_ts
from
    v_opiekun_kh
where 
    opiekun_kh_nr = 71000014 and opiekuni_oddzial = 1

W wyniku dostaję:

71000014	Piotrek	1009	2015-12-15 00:00:00
71000014	Jasiek	1008	2016-06-22 10:24:15

Jak zapisać warunek where, by w wyniku dostać tylko jeden rekord, najnowszy, czyli Jaśka z 22. czerwca, a jednocześnie nie było to "order by opiekun_kh_ts desc limit 0,1' ?

4 odpowiedzi

+1 głos
odpowiedź 27 czerwca 2016 przez krunner Bywalec (2,180 p.)
select
   opiekun_kh_nr as kh_nr, 
   opiekuni_nazwa as opiekun_nazwa, 
   opiekun_kh_op_idx, 
   opiekun_kh_ts
from
   v_opiekun_kh
where 
   opiekun_kh_ts = (select max(opiekun_kh_ts) from v_opiekun_kh;
	

Chyba jak wyżej. Jeżeli jest kilku z tym samym timestampem to również innymi metodami dostaniesz kilka rekordów.

komentarz 28 czerwca 2016 przez Bartess Gaduła (3,630 p.)
Dobra podpowiedź, dodatkowe warunki zapobiegają większej liczbie wyników. Identyczny timestamp w moim przypadku w praktyce bardzo mało prawdopodobne.

Dzięki.
0 głosów
odpowiedź 27 czerwca 2016 przez mbabane Szeryf (79,280 p.)
edycja 27 czerwca 2016 przez mbabane

moze

​SELECT max(tabela.data), id 
FROM tabela;​

ale jesli w tabeli jest kilka rekordow z najwiekszymi datami to nie wiem w sumie czy zwraca pierwsza napotkana czy losowa z tych napotkanych, a zeby wszystkie takie rekordy wypisalo to mozna

SELECT id 
FROM tabela
WHERE tabela.data = (SELECT max(tabela.data) FROM tabela);

 

komentarz 27 czerwca 2016 przez mbabane Szeryf (79,280 p.)
chociaz to pierwsze teraz testuje (bo dawno tych funkcji jakos nie uzywalem) i nie wiem czemu, date bierze ok, ale id bierze pierwsze z brzegu z zupelnie inna data.
–1 głos
odpowiedź 27 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)

A nie lepiej po prostu

ORDER by id desc

?

komentarz 27 czerwca 2016 przez Bartess Gaduła (3,630 p.)

Przecież napisałem, żeby nie było to z order by o raz limit... Wg Twojego pomysłu nie uzyskam najmłodszego rekordu.

Chodzi mi o uzyskanie tego mniej więcej w sposób "max opiekun_kh_ts". Ktoś ma jakiś pomysł?

–1 głos
odpowiedź 27 czerwca 2016 przez Ehlert Ekspert (212,670 p.)

Dlaczego nie możesz użyć order by date? Przecież po to jest, chyba że w treść jakiegoś durnego polecenia wyklucza order.

Inny sposób aby wyciągać „najświeższe” rekordy to dodatkowa kolumna int record_age z autoinkrementacją. Wtedy:

--...
ORDER BY record_age DESC
LIMIT 1;

 

komentarz 27 czerwca 2016 przez Bartess Gaduła (3,630 p.)

Tyle, to ja wiem... ale napisałem:

Jak zapisać warunek where, dostać tylko jeden rekord, najmłodszy, a jednocześnie nie było to "order by opiekun_kh_ts desc limit 0,1' ?

Podobne pytania

0 głosów
2 odpowiedzi 1,366 wizyt
0 głosów
1 odpowiedź 244 wizyt
pytanie zadane 6 czerwca 2016 w C i C++ przez Zaka Nowicjusz (150 p.)
0 głosów
1 odpowiedź 377 wizyt
pytanie zadane 28 stycznia 2016 w PHP przez McShadow Obywatel (1,050 p.)

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...