Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: połączenie 3 tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
miki_kol
Witam
potrzebuję pomocy ponieważ jakoś mi się pomysły skończyły. Chciałbym połączyć dane z 3 tabel oraz to wszystko posortować. Do tej pory nie udało mi się jednak wykonać tego tak by pokazało mi prawdziwe wyniki.

mam tabele :

STATYSTYKI
--idstatystyki
--produkt
--ilosc_skontrolowanych
--ilosc_bledow
--nr_montera

PRACOWNICY
--idpracownicy
--nr
--nazwisko
--dzial

DZIAŁY
--iddzialy
--nr
nazwa

relacje to: STATYSTYKI.nr_montera = PRACOWNICY.nr i PRACOWNICY.dzial = DZIAŁY.iddzialy

potrzebuję by połączyć dane z tych tabel, pogrupować je działami, w działach pokazać pracowników oraz zliczyć łącznie błędy każdego pracownika

Zrobiłem coś takiego:

  1. <?php
  2. $pytanie = "SELECT
  3.            dzialy.nazwa,
  4.            pracownicy.nazwisko,
  5.            statystyki.nr_montera
  6.          FROM
  7.            dzialy, pracownicy, statystyki
  8.          WHERE
  9.            dzialy.iddzialy=pracownicy.dzial
  10.          AND
  11.            pracownicy.nr=statystyki.nr_montera
  12.          GROUP BY
  13.                        dzialy.nazwa";
  14.                                        
  15. $rezultat = @mysql_query($pytanie)or die(mysql_error());
  16. while ($wynik = mysql_fetch_array($rezultat))
  17. {
  18.     echo '['.$wynik['nr_montera'].'] '.$wynik['nazwisko'].' - '.$wynik['nazwa'].'<br>';
  19. }
  20. ?>


Ponieważ jest to budowane więc nie wszyscy pracownicy mają jeszcze przypisany dział. Problem w tym że kod w tej postaci nie pokazuje mi wszystkich. Mam w tej chwili 3 działy i pokazuje mi 3 nazwiska. Nie mówię już o zliczaniu.

Proszę o pomoc

Dzięki i pozdrawiam
wlamywacz
Może napiszesz coś więcej o kolumnach gdyż nie widać jakie powinny być relacje.
miki_kol
napisałem relacje

Cytat
relacje to: STATYSTYKI.nr_montera = PRACOWNICY.nr i PRACOWNICY.dzial = DZIAŁY.iddzialy
artur_dziocha
http://dev.mysql.com/doc/refman/5.0/en/join.html
miki_kol
hm .. w sumie odpowiedź logiczna i wyczerpująca ale na długie godziny. Jak to w życiu bywa ... potrzebna jest odpowiedź na teraz.
Kombinowałem już z LEFT JOIN i do połączenia 2 tabel (działy i pracownicy) jakoś to działało ale po podłączeniu 3 już nie. Poza tym jest jeszcze kwestia zliczania i odpowiedniego grupowania po połączeniu.
kefirek
  1. SELECT *,
  2. COUNT(idpracownicy) AS ile,
  3. SUM(ilosc_bledow) AS bledy
  4. FROM statystyki LEFT JOIN pracownicy ON (nr_montera=nr)
  5. LEFT JOIN dzialy d ON (dzial=d.iddzialy)
  6. GROUP BY dzial
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.