![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem ponieważ nie wiem w jaki sposób stworzyć poprawne zapytanie do bazy. Mam 3 tabele: PUDŁA: ----------------------------------- id_pudla .......numer_pudla 1 ........................11111 2 ........................22222 3 ........................33333 ----------------------------------- MAGAZYN ----------------------------------- id_magazyn .....nazwa_magazynu 1 ......................mag1 2 ......................mag2 ------------------------------------ HISTORIA --------------------------------------------------------------- id_hist .......id_pudla ......data ...............id_magazyn 1 ......................1 .......2010-12-10 ...........mag1 2 ......................1 .......2010-12-11 ...........mag2 3 ......................1 .......2010-12-12 ...........mag1 4 ......................3 .......2010-12-20 ...........mag1 5 ......................2 .......2010-12-15 ...........mag1 6 ......................2 .......2010-12-16 ...........mag2 (pudło o id=1 było najpierw w mag1 -> mag2 ->mag1)
To zapytanie zwraca mi wszystkie numery pudeł, dla których numer magazynu to "1" czyli: numer_pudla ........data............. magazyn 11111 .............2010-12-10 ...........mag1 33333 .............2010-12-20 ...........mag1 11111 .............2010-12-12 ...........mag1 22222 .............2010-12-15............mag1 W jaki sposób zrobić zapytanie do bazy aby wyświetlić tylko listę pudeł znajdujących się w magazynie ale po ostatnim wpisie dla danego pudła? Czyli pudło 11111 powinno w wynikach znajdować się tylko raz i to z ostatnią datą dodania tego właśnie pudła. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
użyj funkcji DISTINCT i posortuj by data desc limit 1
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Po tym zapytaniu wyświetla mi tylko pudło 11111 (z ostatnią datą) ale nie wyświetla mi pozostałych pudeł znajdujących się w bazie. Co robię źle? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
wprowadziłem Ciebie w błąd ale sam doskonale powinieneś wiedzieć.. LIMIT 1 oznacza że pobierze tylko 1 rekord
i powinienes chyba jeszcze dodać GROUP by te pole które bierzesz (przed order by to dajesz) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
mam takie zapytanie, ale dalej otrzymuję wszystkie numery pudeł z danego magazynu. Ma ktoś z Was jakiś pomysł? Albo może podpowiecie na co jeszcze zwrócić uwagę? Ten post edytował piootras82 20.01.2011, 16:08:21 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
to nie takie proste, ponieważ Ty chcesz wyniki pogrupować na polu numer_pudla(czyli otrzymać tylko po jednym wyniku dla każdego numeru pudła), ale przed tym posortować wyniki datą, problem w tym, że w mysql grupowanie odbywa się przed sortowaniem
tutaj masz rozwiązanie z podzapytaniem: http://www.cafewebmaster.com/mysql-order-sort-group najlepiej najpierw spróbuj bez tych JOIN'ów, żeby się nie pogubił Ten post edytował tehaha 20.01.2011, 19:22:23 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Super, dzięki bardzo mi ta formuła pomogła.
Zapytanie u mnie -> bez złączenia, wygląda tak:
W wyniku mam ostatnie wpisy dla danego pudła. Czyli wiem, gdzie aktualnie pudło się znajduje ![]() I gotowe zapytanie jakby ktoś kiedyś chciał
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:01 |