Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> połączenie 3 tabel
miki_kol
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.05.2009

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


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

Ten post edytował miki_kol 24.05.2009, 13:37:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wlamywacz
post
Post #2





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

Ostrzeżenie: (20%)
X----


Może napiszesz coś więcej o kolumnach gdyż nie widać jakie powinny być relacje.
Go to the top of the page
+Quote Post
miki_kol
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.05.2009

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


napisałem relacje

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


Ten post edytował miki_kol 24.05.2009, 13:37:09
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


http://dev.mysql.com/doc/refman/5.0/en/join.html
Go to the top of the page
+Quote Post
miki_kol
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.05.2009

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


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.
Go to the top of the page
+Quote Post
kefirek
post
Post #6





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


  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


Ten post edytował kefirek 24.05.2009, 15:29:10
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 Aktualny czas: 21.08.2025 - 06:12