![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam zapytanie takie:
w jednym produkcie mam od 0 do 10 cen, jeśli dam limit to nie mam stałej liczby wyników na stronie nie mogę więc zrobić stronicowania, bo on daje bezpośrednio limit po zapytaniu SQL nie załapując tego że chodzi mi o 2000 pierwszych produktów a nie o 2000 pierwszych połączonych produkto-cen. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Skoro chcesz same produkty to po co robisz LEFT JOIN do tabeli z cenami ? A jeśli już musi ten JOIN tam być to może GROUP BY wystarczy ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Skoro chcesz same produkty to po co robisz LEFT JOIN do tabeli z cenami ? A jeśli już musi ten JOIN tam być to może GROUP BY wystarczy ? bo chce żeby od razu załadował ich ceny, przy group by cen nie załaduje. Próbowałem to obejść WHERE p.id IN ( SELECT produkt ... LIMIT 10 ) ale wychodzi na to że limit nie działa w podzapytaniach w mysql. Lekka kicha. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
A jaką tam masz strukturę tabel? Po co trzymasz kilka cen dla produktu ? historia zmian czy coś innego ? Twój problem da się rozwiązać na co najmniej kilka sposobów, ale daj więcej info na temat tego co dokładnie chcesz osiągnąć.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
A jaką tam masz strukturę tabel? Po co trzymasz kilka cen dla produktu ? historia zmian czy coś innego ? Twój problem da się rozwiązać na co najmniej kilka sposobów, ale daj więcej info na temat tego co dokładnie chcesz osiągnąć. Kilka cen = kilka cen dla różnych klientów jest. Inne grupy cenowe dla grupy klienci zwykli i np. stali współpracownicy. Jest taka możliwość z SQL:
pytanie czy da się to jakoś zrobić w tym SQL doctrinowym dwa zero? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Chcesz zrobić zwykłe stronnicowanie rekordów? Jeśli tak to wystarczy:
Gdzie: $start = Od którego rekordu ma liczyć $limit = Ile rekordów ma zwrócić |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Niestaczy bo te funkcje jeśli zadam im np. 10 na stronie to mi wypiszą 10 wpisów (cena * produkt), podczas gdy ja mogę mieć w jednym produkcie 3 ceny, w drugim 5 w trzecim 2. I będę miał całowity rozpierdziel w wyświetlanych danych.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
To jest ogólny mechanizm pobierania danych w takim przypadku, korzystając z Doctrine wygląda to z grubsza tak samo. Przy czym istnieją narzędzia, które automatyzują ten proces (np. odpowiedni adapter dla Zend/Paginatora), gdzie jedyne co musisz zrobić to przekazać Doctrine'owskie zapytanie (obiekt Doctrine\ORM\Query), a one wygenerują pierwsze i odpowiednio zmodyfikują drugie po czym je wykonają. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
To jest ogólny mechanizm pobierania danych w takim przypadku, korzystając z Doctrine wygląda to z grubsza tak samo. Przy czym istnieją narzędzia, które automatyzują ten proces (np. odpowiedni adapter dla Zend/Paginatora), gdzie jedyne co musisz zrobić to przekazać Doctrine'owskie zapytanie (obiekt Doctrine\ORM\Query), a one wygenerują pierwsze i odpowiednio zmodyfikują drugie po czym je wykonają. tylko jak tą listę ID z poprzedniego zapytania przekazaćdo następego? czy zmienną mysql czy przez php? wydaje mi się że przez PHP to się "zmuli" |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zależy jak duży chcesz robić limit, jeśli na kilka tysięcy rekordów (tak jak w przykładzie) to faktycznie zapytanie i samo przesłanie zapytania z php do mysql może zamulić.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zależy jak duży chcesz robić limit, jeśli na kilka tysięcy rekordów (tak jak w przykładzie) to faktycznie zapytanie i samo przesłanie zapytania z php do mysql może zamulić. tak gdzieś 100, 500 albo nawet 5000 produktów. A tamto zapytanie pobierające ID to chyba nie mogę zrobić przez Doctrine? Bo nie bardzo mam pomysł jak wykorzystać doctrine do czegoś takiego, zwłasza że wolałbym w tablicy asocjacyjnjej wybrać samo ID a nie ładować zbędnych kolumn produktów - nie wiadomo kiedy pamięci zabraknie. BTW. sam pomysł ładowania wszystkiego naraz zamiast 500 małych zapytań jest chyba ok? Z moich testów wychodzi że znacznie szybciej by to szło.
To jest ogólny mechanizm pobierania danych w takim przypadku, korzystając z Doctrine wygląda to z grubsza tak samo. Przy czym istnieją narzędzia, które automatyzują ten proces (np. odpowiedni adapter dla Zend/Paginatora), gdzie jedyne co musisz zrobić to przekazać Doctrine'owskie zapytanie (obiekt Doctrine\ORM\Query), a one wygenerują pierwsze i odpowiednio zmodyfikują drugie po czym je wykonają. a możesz jeszcze podać linka do takiego narzędzia? Ten post edytował michael1986 10.01.2012, 23:46:43 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@Google: doctrine extensions, Google: doctrine zend paginator adapter
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:50 |