Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dwa zapytania w jednym
pianta_d
post 1.03.2018, 10:17:00
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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
Go to the top of the page
+Quote Post
kapslokk
post 1.03.2018, 10:35:25
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


JOIN, LIMIT i ORDER powinny wystarczyc. Wrzuc te 2 zapytania ktore teraz wykonujesz.

Ten post edytował kapslokk 1.03.2018, 10:36:19
Go to the top of the page
+Quote Post
pianta_d
post 1.03.2018, 13:42:19
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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
Go to the top of the page
+Quote Post
kapslokk
post 1.03.2018, 13:57:51
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


  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.
Go to the top of the page
+Quote Post
pianta_d
post 1.03.2018, 14:10:13
Post #5





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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ę
Go to the top of the page
+Quote Post
mmmmmmm
post 1.03.2018, 23:44:11
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  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`
Go to the top of the page
+Quote Post
pianta_d
post 3.03.2018, 10:45:58
Post #7





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Idealnie

Dziękuję za gotowca
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: 28.03.2024 - 20:05