![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 3.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam następujący problem.
Mam bazę danych o strukturze: name | data1 _________________________ 7800 | 2015-07-24 09:57:33 7801 | 2015-07-24 09:59:33 7800 | 2015-07-24 09:55:33 7801 | 2015-07-24 09:51:33 itd rożne rekordy. Chcę by wyświetlało w kolejności od najnowszej daty, grupująć według nazwy. Chcę dostać coś takiego: 7801 | 2015-07-24 09:59:33 7800 | 2015-07-24 09:57:33 itd. Mój problem polega na tym, że MYSQL pomija co drugi rekord prawidłowy. Np w tym przypadku wyświetla mi tylko 7800.. Zapytanie, które stosuje to:
Gdy wywale 'GROUP BY' oczywiście wyświetla normalnie, jednak nie grupuje. Jak sobie poradzić z tym GROU BY ? Ten post edytował djpotwosss 24.07.2015, 15:04:45 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
SELECT NAME, MAX(DATA)...
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 3.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie SELECT name, MAX(data1) FROM tabela GROUP BY name ORDER BY data1 DESC nadal nie działa. Co drugie rekordy dalej są omijane.
Ten post edytował djpotwosss 24.07.2015, 15:33:57 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Na jakiej podstawie stwierdzasz, że co drugi rekord jest omijany?
Obydwa zapytania nie mają prawa wyrzucić z puli rekordów o name=7801. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 3.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Na obrazku 1 to wszystkie rekordy w tej tabeli?
W kolumnie data1 masz typ DATETIME lub TIMESTAMP? Ten post edytował trueblue 24.07.2015, 16:39:02 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 3.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie są to wszystkie rekordy. Rekordów mam ponad 7 tysięcy. Używam DATETIME a pole nazwa to int.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Proponuję sprawdzić czy rekordy, które podejrzewasz o zniknięcie znajdują się niżej w wyniku niż przewidujesz ich miejsce.
-------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 3.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety niżej ich nie ma.. Tak jak wyżej pisałem, rekordy 'giną' gdzieś.. Jak inaczej stworzyć to zapytanie ?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Twoje zapytanie nie jest do końca poprawne, ponieważ wybiera "pierwszą lepszą" wartość data1 podczas grupowania. Powinno być zapytanie wybierające MAX(data1).
Jednak pod względem znikania danych obydwa zapytania są poprawne, tj. nie ma możliwości, aby podczas grupowania uciekły wszystkie wartości reprezentujące grupę (tu: 7801). Proponuję abyś przetestował zapytanie/a na mniejszej liczbie rekordów, np. na 4-ech, które podałeś wyżej. -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 3.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Gdy w zapytaniu ustawię 'MAX(data1)' oraz 'LIMIT 4' sytuacja występuje tak tamo.. Nadal jest omjany rekord.
Ten post edytował djpotwosss 31.07.2015, 12:08:41 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Przetestuj na źródle o liczbie 4-ech rekordów, nie ograniczaj wyniku.
Dokładnie na tym: name | data1 _________________________ 7800 | 2015-07-24 09:57:33 7801 | 2015-07-24 09:59:33 7800 | 2015-07-24 09:55:33 7801 | 2015-07-24 09:51:33 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 09:23 |