Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MYSQL - wyszukiwarka ze zmiennym kryterium szukania
Forum PHP.pl > Forum > Bazy danych > MySQL
kr3t
Witam,

Mam baze danych pracownikow i ich pola ( podam tylko czesc pol i tabel):

DANE OSOBOWE:
- ID_OSOBY
- PŁEĆ
- PRAWO JAZDY
- WŁASNY SAMOCHÓD
- DOSWIADCZENIE

DOSWIADCZENIE :
- ID_DZIEDZINY
- DZIEDZINA

Kryterium moze przyjac opcje "obojetnie" wtedy nie szukamy po tym kryterium.

Szukamy po polach z tabeli dane osobowe, ale jak napisac uniwersalne zapytanie do bazy aby np.

- wybral mi kobiete z prawem jazdym i obojetnie czy ma samochod, i zna
np. informatyke
lub
- mezczyzne z samochodem i z prawem jazdy i dowiadczeniem-mechanik smile.gif


Jak stworzyc takie zapytanie ... ?


Pozdrawiam i z gory Dzieki za odpowiedz,
kr3T
spenalzo
Cytat
- wybral mi kobiete z prawem jazdym i obojetnie czy ma samochod, i zna
np. informatyke

[sql:1:16b41b3d1e]SELECT o.* FROM dane_osobowe o, doswiadczenie d WHERE o.plec='k' AND o.prawo_jazdy=1 AND o.doswiadczenie=d.id_dziedziny AND d.dziedzina='informatyka'[/sql:1:16b41b3d1e]

Cytat
- mezczyzne z samochodem i z prawem jazdy i dowiadczeniem-mechanik smile.gif

[sql:1:16b41b3d1e]SELECT o.* FROM dane_osobowe o, doswiadczenie d WHERE o.plec='m' AND o.prawo_jazdy=1 AND o.doswiadczenie=d.id_dziedziny AND d.dziedzina='mechanik'[/sql:1:16b41b3d1e]

Ogólnie - jeżeli jest coś obojętne, to wtedy tego nie wpisujesz, i tyle.

Jeżeli znasz ID danej dziedziny (np. mechanik to nr 13) to możesz to uproscić:
[sql:1:16b41b3d1e]SELECT * FROM dane_osobowe WHERE plec='m' AND prawo_jazdy=1 AND doswiadczenie='13'[/sql:1:16b41b3d1e]
kr3t
Oto kawalek kodu php

[php:1:903a213393]<?php
if($plec=='0') {
$wyb_plec='';
}
else {
$wyb_plec="d_osobowe.plec='$plec'";
}

if($prawo_jazdy=='0') {
$wyb_prawo='';
}
else {
$wyb_prawo="and d_osobowe.prawo_jazdy='$prawo_jazdy'";
}
if($samochod=='0') {
$wyb_samochod='';
}
else {
$wyb_samochod="and d_osobowe.samochod='$samochod'";
}
if($kategoria_dosw=='0') {
$pole_doswiadczenie='';
$tab_doswiadczenie='';
$wyb_doswiadczenie='';
$id_doswiadczenie='';
}
else {
$pole_doswiadczenie="id_osoby_dosw,kategoria_dosw";
$tab_doswiadczenie=",doswiadczenie";
$wyb_doswiadczenie="and doswiadczenie.kategoria_dosw='$kategoria_dosw'";
$id_doswiadczenie="and d_osobowe.id_osoby=doswiadczenie.id_osoby_dosw";
}
?>[/php:1:903a213393]

Zapytanie mysql :

[sql:1:903a213393]"SELECT DISTINCT id_osoby,plec,d_urodzenia,prawo_jazdy, samochod FROM $tab_doswiadczenie WHERE d_osobowe.plec='$plec' $wyb_prawo $wyb_samochod $wyb_doswiadczenie $id_doswiadczenie;
[/sql:1:903a213393]

Cos mniej wiecej tak to wyglada co ja wykombinowalem -
ale wydaje mi sie to malo profesjonalne, nie moze cos tam z laczeniem tabel itp.

Czy macie jakis pomysl?

Pozdrawiam,
KR3T
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.