Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalne rozwiązanie
nexis
post
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Mój problem wygląda następująco:


- Posiadam cennik, który raz na dobę importuje ponad 16 000 produktów do bazy danych MySQL.
- Cenny w cenniku są cenami hurtowymi, więc chciałbym do nich doliczyć odpowiednie marże.
- Marże mają być dla konkretnych przedziałów cenowych i ma to być stała kwota (nie procent ceny).


W bazie danych MySQL utworzyłem tabelę do przechowania marż o następującej strukturze:

  1. ##################################
  2. # odKwoty # doKwoty # marza #
  3. ##################################
  4. # 0.00 # 99.99 # 10.00 #
  5. # 100.00 # 199.99 # 20.00 #
  6. # 200.00 # 299.99 # 30.00 #
  7. # 300.00 # 399.99 # 40.00 #
  8. # 400.00 # 499.99 # 50.00 #
  9. # 500.00 # 599.99 # 60.00 #
  10. # 600.00 # 699.99 # 70.00 #
  11. # 700.00 # 799.99 # 80.00 #
  12. # 800.00 # 899.99 # 90.00 #
  13. # 900.00 # 999.99 # 100.00 #
  14. # 1000.00 # 99999999.99 # 200.00 #
  15. ##################################


Z uwagi na to, że produktów jest dość dużo i chciałbym jak najmądrzej wykorzystać zasoby serwera. I stąd moje pytanie:

w jaki sposób najlepiej rozwiązać mój problem? Pobrać przedziały cenowe do tablicy i jak wtedy na nich operować? Czy MySQL potrafiłby zrealizować takie obliczenia (produkty po imporcie też są w tabelce)?

Dodam jeszcze, że z założenia przedziały cenowe nie pokrywają się i nie występują przerwy (tzw. czarne dziury).

Ten post edytował nexis 28.03.2008, 18:58:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Użycie MySQL jest chyba faktycznie najrozsądniejsze. Dodam tylko jeszcze dla przyszłych czytelników tego tematu, że ważne jest, aby posortować marże malejąco, ponieważ w przeciwnym przypadku produkt po doliczeniu marży może osiągnąć kolejny próg i marża zostanie doliczona dwu- lub wielokrotnie.

Moje rozwiązanie:

  1. <?php
  2. $result = $db->query
  3. ("
  4. SELECT
  5. odKwoty,
  6. doKwoty,
  7. marza
  8. FROM sklep_marza
  9. ORDER BY doKwoty DESC
  10. ");
  11. while($row = $result->fetch_assoc())
  12. {
  13. $db->query
  14. ("
  15. UPDATE
  16. sklep_produkt
  17. SET
  18. cena_netto = (cena_netto+" . $row['marza'] . "),
  19. cena_brutto = (cena_netto*1.22)
  20. WHERE
  21. cena_netto BETWEEN " . $row['odKwoty'] . " AND " . $row['doKwoty'] . "
  22. "); 
  23. }
  24. $result->close();
  25. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 19:16