Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dwa zapytania w jednym
Forum PHP.pl > Forum > Bazy danych > MySQL
pianta_d
Witam

Mam problem z ułożeniem zapytania do bazy

Tabela tbl_pracownicy zawiera m.in. pola
id_pracownik
nazwisko
imie
...

tabela tbl_uprawnienia zawiera m.in. pola
id_uprawnienia
nr_osoba
nr_upraw
...

Jedna osoba może mieć kilka rekordów w tabeli z uprawnieniami.

Mam problem ze zbudowaniem jednego zapytania do listowania osób z ich uprawnieniami.
Jeśli pracownik ma więcej niż jedno uprawnienie potrzebuję wyświetlić ostatnie (najświeższe) uprawnienie.
Aktualnie robię to na dwóch zapytaniach, ale może da się to zrobić w jednym.

Proszę o pomoc
kapslokk
JOIN, LIMIT i ORDER powinny wystarczyc. Wrzuc te 2 zapytania ktore teraz wykonujesz.
pianta_d
1.
  1. SELECT `id_pracownik`,`nazwisko`,`imie_1`,`pesel`,`idef_pol` FROM `tbl_pracownicy`
  2. WHERE `zwolniony`='0' AND `jednostka_ewidencja`='".$_SESSION['upr_jednostka_glowna']."'
  3. ORDER BY `nazwisko`,`imie_1`


2.
  1. SELECT * FROM `tbl_ksi` WHERE `nr_osoba`= '".$row['id_pracownik']."' ORDER BY `data_od` DESC LIMIT 1
kapslokk
  1. SELECT tk.* FROM tbl_ksi tk
  2. JOIN tbl_pracownicy tp ON
  3. tk.nr_osoba = tp.id_pracownik
  4. AND tp.zwolniony = 0
  5. AND tp.jednostka_ewidencja='".$_SESSION['upr_jednostka_glowna']."'
  6. ORDER BY tk.data_od DESC LIMIT 1


Mniej wiecej tak, poczytaj tez o bindowaniu parametrow.
pianta_d
Dziękuję za odpowiedź, jednak zapytanie zwraca mi pojedynczy rekord, a osób w bazie mam ponad 700.

Poprzednio nie dodałem jeszcze, że nie każda osoba może mieć wydane uprawnienia, ale (jak już pisałem) inna może mieć ich więcej niż jeden.

Dziękuję raz jeszcze, poczytam i jakoś to przerobię
mmmmmmm
  1. SELECT p.`id_pracownik`,p.`nazwisko`,p.`imie_1`,p.`pesel`,p.`idef_pol`, t.* FROM `tbl_pracownicy` p LEFT JOIN (SELECT `nr_osoba`, Max(`data_od`) `data_od` FROM `tbl_ksi` GROUP BY `nr_osoba`) sub ON sub.`nr_osoba`=p.id_pracownik LEFT JOIN `tbl_ksi` t ON t.`nr_osoba`=sub.`nr_osoba` AND t.`data_od`=sub.`data_od`
  2. WHERE `zwolniony`='0' AND `jednostka_ewidencja`='".$_SESSION['upr_jednostka_glowna']."'
  3. ORDER BY `nazwisko`,`imie_1`
pianta_d
Idealnie

Dziękuję za gotowca
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.