Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Wyszukiwarka zamówień
Forum PHP.pl > Forum > PHP
projektGraf
Witam

Mam w sklepie 2 tabele customer i order. W tabeli customer są kodowane dane klientów, a w order zamówienia sklepu.
Chciałbym teraz zrobić wyszukiwanie zamówień po danych klienta. Ponieważ dane klienta są kodowane wykukanie np klienta po Loginie wymaga takiego zapytania:

  1. $login = str_replace("%", "\%", encode($_SESSION['search']['login'], $CONF_USER_CODE));
  2. $loginLower = str_replace("%", "\%", encode(strtolower($_SESSION['search']['login']), $CONF_USER_CODE));
  3. $loginUper = str_replace("%", "\%", encode(strtoupper($_SESSION['search']['login']), $CONF_USER_CODE));
  4. $loginFirst = str_replace("%", "\%", encode(ucwords(strtolower($_SESSION['search']['login'])), $CONF_USER_CODE));
  5.  
  6. $mysql->recordAll("SELECT * FROM `".DB_PREFIX."customer` WHERE
  7. (`login` LIKE '".$login."%') OR
  8. (`login` LIKE '".$loginLower."%') OR
  9. (`login` LIKE '".$loginUper."%') OR
  10. (`login` LIKE '".$loginFirst."%') ORDER BY `login`;");


W tabeli order mam pole z id klienta.

I teraz pytanie:
Czy do szukania zamówień klienta w tabeli order lepiej dorobić nowe pola z danymi i stworzyć proste pytanie, czy lepiej zapytać poprzez relacje.
Zakładamy że w tabeli customer mamy 1000 klientów a w tabeli order mamy 2500 zamówień.
Chciałbym uniknąć blokowania serwera czy też zrywania połączenia.

POzdrawiam
R4D3K
Może tak pokarzesz strukturę bazy danych ?
blooregard
Cytat
W tabeli order mam pole z id klienta.

I to, jak mawiają Amerykanie, "all that You need"

  1. SELECT c.* , o.* FROM customers AS c
  2. LEFT JOIN orders AS o ON c.id = o.customer_id
  3. WHERE [warunki_jakie_tam_chcesz]
  4. ORDER BY [po_czy_tam_chcesz] LIMIT [ile_tam_chcesz]


polecam lekturę:
http://dev.mysql.com/doc/refman/5.0/en/select.html
projektGraf
Nie zrozumieliście mnie. Nie chodzi mi o zapytanie, to sobie sam napiszę. Chodziło mi co lepiej zastosować nowe pola w order z danymi klienta czy zapytania poprzez relacje.
W kilku książkach i artykułach przeczytałem że zapytania poprzez relacje obciążają za bardzo serwer.

Cytat:
Zapytanie to było wykorzystywane praktycznie na stronie WWW autora podręcznika. Działa, lecz przy większej ilości rekordów zaczynają się problemy w stylu zrywania połączenia czy nawet blokowania serwera DB. Naprawdę, nie życzymy nikomu, aby znalazł się w podobnej sytuacji, zwłaszcza że problemowi można zaradzić w bardzo prosty sposób. Dlaczego bowiem zliczać ilość komentarzy przy każdym wyświetlaniu strony?........

Źródło:
http://pl.wikibooks.org/wiki/PHP/Relacje_i_indeksy

No to tyle teoria, a teraz praktyka.
Nie chciałbym aby przy dużej ilości użytkowników i dużej ilości zamówień wywalił się serwer z komunikatem o przeciążeniu.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.