Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie klienta po adresie
sebekzosw
post 7.05.2014, 20:59:51
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Witam,

mam taką tabelę:

clients
id
name
surname

oraz tabela

clients_address
id
ulica
nr_budynku
nr_lokalu
kod_pocztowy
miasto
typ
id_klienta

są to relacje jeden do wielu (jeden klient może mieć wiele adresów - zameldowania / zamieszkania / korespondencji)

chciałbym znaleźć wszystkich klientów co mieszkają w Warszawie

Niby prosta sprawa, tylko że początek zapytania jest narzucony:

SELECT * FROM `clients`

powinno być left join `clients_addres` tylko jak zrobić, żeby to było szybkie i optymalne. Może być dziesiątki tysięcy klientów i adresów.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Turson
post 7.05.2014, 22:19:34
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. SELECT * FROM clients LEFT JOIN clients_adress ON clients_adress.id_klienta = clients.id WHERE clients_adress.miasto = 'Warszawa'

żeby było optymalniej, zamiast * podaj konkretne kolumny
Go to the top of the page
+Quote Post
Pyton_000
post 7.05.2014, 22:32:49
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Szybciej chyba jednak by bylo jakbys robił zapytanie z drugiej strony.
Go to the top of the page
+Quote Post
sebekzosw
post 7.05.2014, 23:01:33
Post #4





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Turson, to Twoje zapytanie to znam - ale bezsensu jest. Bo jak np mam 10tyś klientów, a 500 z nich ma 3 adresy a reszta po 1, to zwróci mi 11.500 rekordów - zakłamane.

Pyton_000, niby tak, ale to wyszukiwanie jest opcjonalne. W tabeli klienci mam jeszcze kilka pól po których wyszukuje. Np status, wiek itp. Poza tym mam jeszcze jedną tabele - clients_works - czyli miejsca w których pracują klienci. I np będę potrzebować stworzyć zapytanie typu:

Klienci w wieku 28-30, którzy mają status aktywny, mieszkają w Warszawie i są barmanami.

Jak to wtedy widzisz?
Go to the top of the page
+Quote Post
Pyton_000
post 8.05.2014, 07:20:41
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Hmm...
Do tego co Turson podał dodaj Group BY user_id
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 12:00