[php] jak skonstruowac takie zapytanie?

0

WItam kurcze mam taki problem moze i banalny ale jest tak.
tabelka

USERS i ona ma pola
ID
EMAIL
NICK

i jest tabelka
PERSONAL i ma pola
ID
ID_USER
NAME
PHONE
WIEK
MIASTO

teraz potrzebne mie zapytanie ktore wyszkua wszystkie osoby
ktore maja wiek miedzy 20 a 25 LAT
ale mozna tez szukac po emailu, po nr tel.
po miastach po nicku itd

Jest formularz i w zaleznosci kto co wypelni tak sie ma szukac
to jak prawidlowo skonsruowac zapytanie juz tydzien nad tym siedze :(
np SELEST * FROM users,persona WHERE i co dalej ?

0

Prefix raczej SQL a nie PHP :)

Tydzień nad tym siedzisz? huh.. ale gratulacje za wytrwałość, a nie lecenie z problemem na forum po 5 minutach [browar]

Co do problemu, to myślę, że coś takiego:

select u.id, name
from users u
join personal p on u.id = p.id_user
where wiek between 20 and 25
and email like '[email protected]';

I w PHP możesz dodawać na końcu dodatkowe warunki w zależności od formularza, czyli dojść może "and pole = wartość" lub 'like' zamiast '=' dla stringów.

<font color="brown">I na Jowisza! Nie używaj "<font color="blue">select *</span>"! Nigdy... wypisuj zawsze wszystkie pola, które chcesz uzyskać - nawet jak będą to wszystkie z tabeli</span>

0

Dziekuje za ZAPYTANIE
W zasadzie faktycznie nie uzywalem w selekcie *
ale spytam dlaczego lepiej wypisac wszytskie pola niz uzyc
gwiazdki
p.s. oczywiscie bede sie do tego stosowal

0

Jest wiele powodów, to wybrane z sieci:

DON'T SELECT *

This is hard to get used, I know. And I confess: often I use it; but try to specify only the columns you'll need. This will:

  1. Reduce memory consumption and network bandwidth
  2. Ease security design
  3. Gives the query optimizer a chance to read all the needed columns from the indexes

10 Things Developers Currently Do w/ SQL That They Shouldn't
...
select * EVERYWHERE!
...
to nieźle uargumentowane ;)

Nasz wykładowca od baz danych (Oracle) pewnie rozstrzelałby za użycie select * [green]

Przez to baza musi poświęcić czas na pobranie jakie są kolumny bo nie ma ich spisu w zapytaniu.
Również problemy pojawiają się jeśli tablica zostanie kiedyś rozszerzona - dostajesz dodatkowe dane, których nie używasz po zapytaniu. Więcej danych do przesłania.
A już porażka, jak zapisujesz wynik np. do pliku - nagle pojawiają się dane, których nikt nie przewidział bo w danym miejscu są niepotrzbne.

i inne takie... ;)

0

analizuje to zapytanie i chodzi o to zeby na poczatku wypisac wszytskich userwo ktorzy maja PLEC ustawiona na k
Pole plec znajduje sie w tabeli USERS
wiec wypisuje

SELECT * (tu odpowidnie pola)
FROM users
WHERE plec='k'

i wtedy wszytsko bedzie dobrze
a w bazie PERSONAL jest pole
MIASTO

i teraz jak ktos wpisze ze chce wyszukac KOBIETY z miasta LONDYN
to zapytanie moze wygladac tak?
SELECT *(wiadomo) :)
FROM users u, personal p
WHERE u.plec='k'
AND p.miasto='LONDYN';

to to bedzie dobre zapytanie ?

a kiedy apisze tak

SELECT *(wiadomo)
FROM users u, personal p
WHERE u.plec='k'
AND p.miasto='LONDYN';

to mi wyszukuje wszytskie Kobiety a wich miasta
wpisuje sie londyn a przeciez powinna sie znalezc jedna tylko osoba

0
madero napisał(a)

to to bedzie dobre zapytanie ?
A czemu nie sprawdzisz zamiast pytać? :>
Wygląda ok
Nie dam głowy, czy zamiast '=' nie ma być 'like' - nie wiem jaki masz typ pola.

0

typ pola to string to wtedy LIKE
a jak int to =

jak wpisalem to zapytanie
to mi wyszukuje wszytskie Kobiety a wich miasta
wpisuje sie londyn a przeciez powinna sie znalezc jedna tylko osoba

no nic pokombinuje z tym jeszcze dzieki za uwagi i prady pozdro

1 użytkowników online, w tym zalogowanych: 0, gości: 1