Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] jak wykonać łączenie tabel?
szczrzcz
post 7.10.2020, 12:50:21
Post #1





Grupa: Zarejestrowani
Postów: 153
Pomógł: 0
Dołączył: 20.04.2017
Skąd: Warszawa

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


Jak wykonać złaczenie by z poniższych tabel Pracownicy i Firmy:

tabela Pracownicy
Kod
+--------------+--------+--------+
| id_pracownik | type   | status |
+--------------+--------+--------+
| 7            | normal | 0      |
+--------------+--------+--------+
| 8            | normal | 0      |
+--------------+--------+--------+
| 9            | boss   | 1      |
+--------------+--------+--------+
| 10           | normal | 0      |
+--------------+--------+--------+
| 11           | normal | 0      |
+--------------+--------+--------+
| 12           | boss   | 0      |
+--------------+--------+--------+


tabela Firmy
Kod
+----------+--------------+---------------------+
| id_firma | pracownik_id | pracownik_parent_id |
+----------+--------------+---------------------+
| 1        | 7            | 9                   |
+----------+--------------+---------------------+
| 2        | 8            | 9                   |
+----------+--------------+---------------------+


... wyciągnąć dane pracowników (Pracownicy.id_pracownik, Pracownicy.status), których zwierzchnik Pracownicy.type='boss' ma Pracownicy.status=1. By wynikiem była taka tabela:

Kod
+--------------+--------+--------+
| id_pracownik | type   | status |
+--------------+--------+--------+
| 7            | normal | 0      |
+--------------+--------+--------+
| 8            | normal | 0      |
+--------------+--------+--------+


Próbuję:
Kod
SELECT Pracownicy.id_pracownik, Pracownicy.type, Pracownicy.status, Firmy.id
FROM `Pracownicy`

LEFT JOIN `Pracownicy` AS `Pracownicy2`
ON  `Pracownicy2`.`id`  =`Pracownicy`.`id`

LEFT JOIN `Firmy`
ON  `Pracownicy`.`id` = `Firmy`.`pracownik_parent_id`

WHERE `Pracownicy`.`id` = `Firmy`.`pracownik_parent_id`
AND  `Pracownicy2`.`type` = 'boss'
AND `Pracownicy2`.`status` = '1'




ale wychodzi mi :

Kod
+--------------+--------+--------+
| id_pracownik | type   | status |
+--------------+--------+--------+
| 9            | boss   | 1      |
+--------------+--------+--------+
| 9            | boss   | 1      |
+--------------+--------+--------+


Ten post edytował szczrzcz 7.10.2020, 12:56:25
Go to the top of the page
+Quote Post
SmokAnalog
post 7.10.2020, 17:22:36
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ja bym zaczął od tabeli firmy:

  1. SELECT `pracownicy`.* FROM `firmy`
  2. JOIN `pracownicy` ON `pracownicy`.`id` = `firmy`.`pracownik_id`
  3. JOIN `pracownicy` AS `zwierzchnicy` ON `zwierzchnicy`.`id` = `firmy`.`pracownik_parent_id`
  4. WHERE `zwierzchnicy`.`type` = 'boss'
  5. AND `zwierzchnicy`.`status` = 1
Go to the top of the page
+Quote Post
szczrzcz
post 9.10.2020, 09:47:13
Post #3





Grupa: Zarejestrowani
Postów: 153
Pomógł: 0
Dołączył: 20.04.2017
Skąd: Warszawa

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


boże
Go to the top of the page
+Quote Post
SmokAnalog
post 9.10.2020, 10:13:28
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Wystarczy "smoku" laugh.gif
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: 27.04.2024 - 12:13