![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 0 Dołączył: 24.03.2009 Skąd: Hamburg DE Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
wlasnie stworzylam sobie skrypt ktory zmienia mi automatyczne statusy. Niestety stanełam nad zapytaniem do bazy sql. Poniższe zapytanie wyświetla mi poprawnie rekordy: id_order, tracking_number i ostatnią date date_add z tabeli ps_order_history ale już id_order_state z tabeli ps_order_history wyswietla mi dowolna wartosc z roznych rekordow a ja bym chciala ażeby wyświetlał ostatnią pozycję odpowiadającą rekordowi date_add. Z tego co wiem powinnam zrobić zapytanie w zapytaniu. Czy pomożecie mi dojść do rozwiązania problemu?
Ten post edytował agataperz 23.08.2014, 17:05:26 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
zamiast "MAX" użyj "ORDER BY ps_order_history.date_add DESC" oraz "LIMIT 1"
Ten post edytował timon27 23.08.2014, 17:08:24 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 0 Dołączył: 24.03.2009 Skąd: Hamburg DE Ostrzeżenie: (0%) ![]() ![]() |
niestety LIMIT 1 automatycznie mi zablokuje wszystkie pozostałe rekordy id_order których może być duuużo
![]() dla ulatwienia ponizej przedstawiam tabele ps_order_history id_order_history id_employee id_order id_order_state date_add 1 0 1 1 2014-04-28 15:25:26 2 0 2 10 2014-04-29 11:16:46 3 0 3 13 2014-05-03 17:30:55 4 0 4 1 2014-06-27 16:44:29 5 1 4 2 2014-07-05 12:24:46 ps_order_carrier id_order_carrier id_order id_carrier id_order_invoice weight shipping_cost_tax_excl shipping_cost_tax_incl tracking_number date_add 1 1 2 0 0.000000 0.000000 0.000000 2014-04-28 15:25:36 2 2 13 0 108.000000 8.850000 10.890000 2014-04-29 11:16:46 3 3 13 2 4.000000 8.850000 10.890000 2014-05-03 17:30:55 4 4 30 1 1.200000 5.000000 6.150000 2014-06-27 16:44:28 5 5 29 3 2.000000 11.500000 14.150000 2014-07-05 23:41:19 6 6 29 4 1.200000 11.500000 14.150000 2014-07-06 12:35:11 7 7 32 0 1.200000 11.000000 13.530000 2014-07-06 21:50:11 8 8 56 5 0.235000 17.070000 20.990000 2014-07-18 13:04:29 9 9 38 6 0.235000 13.000000 15.990000 2014-07-26 14:07:49 10 10 67 7 1.200000 16.500000 20.300000 330825320 2014-07-29 19:32:34 11 11 71 0 0.235000 12.000000 14.760000 2014-07-29 20:30:29 12 12 71 0 0.235000 12.000000 14.760000 2014-07-29 20:49:30 13 13 48 8 0.500000 3.240000 3.990000 664920233460004119904133 2014-08-19 13:22:01 Ten post edytował agataperz 23.08.2014, 17:38:07 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Brakuje ci GROUP BY...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Brakuje ci GROUP BY... GROUP BY nie jest konieczne. Jeśli korzysta się z funkcji np. MAX to automatycznie grupuje do 1 linijki. I myślałem że tak chce agataperz. A tu nagle: niestety LIMIT 1 automatycznie mi zablokuje wszystkie pozostałe rekordy id_order których może być duuużo ![]() Czyli jednak chce więcej linijek. agata zdecyduj co chcesz: jedną linijkę, czy grupowanie, jak drugie to czemu nie ma tego w zapytaniu? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Glupoty gadasz. Żeby nie gadać głupot specjalnie wszedłem w phpmyadmin i odpytałem bazę:
Tabela towary ma tysiące wierszy. Zgadnij ile wierszy wypluło zapytanie? Jeden. Może to jakieś ustawienia mysql, ale miałem tak w hekko, było tak w dih.pl. Tak samo przy wszystkich funkcjach agregujących Ten post edytował timon27 24.08.2014, 19:45:23 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ale nie w przypadku, gdy przed MAX(stan) miałbys wymienione inne pola.
Poza tym domyślnie MySQl jest źle skonfigurowany. Nie ma SQL_MODE= ANSI |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ale nie w przypadku, gdy przed MAX(stan) miałbys wymienione inne pola. Zobaczmy:
Nope, dalej jedna linijka. Poza tym domyślnie MySQl jest źle skonfigurowany. Nie ma SQL_MODE= ANSI Co to znaczy 'źle'? To po co wybór sql_mode, skoro istnieje 'jedyny słuszny'? Ten post edytował timon27 24.08.2014, 22:09:56 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Co to znaczy 'źle'? To po co wybór sql_mode, skoro istnieje 'jedyny słuszny'? Bo mmmmmmm uznaje tylko jeden "słuszny" i już nie raz na tym forum powodował przez to założenie niepotrzebne problemy... Nie dociera do niego, że nie jest to standardowe ustawienie i zdecydowana wiekszosc ludzi pracuje na normalnym ustawieniu.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wynik: '3 szt.', 20 Ni z gruszki, ni z pietruszki. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Jakby policzyć Twój wyimaginowany wiersz "Ni z gruszki, ni z pietruszki". To rzeczywiście zwraca więcej niż 1 wiersz. Ale to sprawa bardziej dla jakiegoś lekarza, że widzisz wiersze, które nie istnieją
![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 09:20 |