Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] jak wykonać łączenie tabel?
Forum PHP.pl > Forum > Przedszkole
szczrzcz
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      |
+--------------+--------+--------+
SmokAnalog
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
szczrzcz
boże
SmokAnalog
Wystarczy "smoku" laugh.gif
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.