Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Złożone zapytanie SQL
potreb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Witam mam opcję pobierania danych z dwóch tabel:
  1. <?php
  2. SELECT p.*, c.*  FROM pb_depart c LEFT JOIN pb_celldep p on p.id_dep = c.did WHERE p.id_dep = '$iddep' $csql $dssql ORDER BY c.kolejnosc ASC, p.idwysw ASC
  3. ?>


Chciałbym dodać jeszcze jedną tabele (pb_workers), której wartość np g.pr_id = p.cid czyli dla tabeli celldep.
Próbowałem to zrobić na zasadzie następnego left join, niestety nazwy z tabeli celldep wywalało mi tyle razi ile było przypisanych do niej rekordów z tabeli workers. Czy można połączyć 3 tabele?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Dzięki za podpowiedzi. Zrobiłem tak aby było wszystko przejrzyste. Moje zapytanie wygląda teraz tak i kod php:
  1. <?php
  2. $sqldep = "SELECT d.*, c.*, w.* FROM pb_depart d
  3.    INNER JOIN pb_celldep c on c.id_depart = d.did
  4.    INNER JOIN pb_workers w on w.id_celldep = c.cid
  5.    WHERE c.id_depart = '$iddep' $csql $dssql ORDER BY w.nazwisko";
  6.    
  7.    $res = dbquery($sqldep);
  8.    $listar = array();
  9.    while ($r = dbarray($res))
  10.    {
  11.    
  12.        echo $r['nazwisko'];
  13.        $did = $r['did'];
  14.        $cid = $r['cid'];
  15.          if (!isset($listar[$did]))
  16.        $listar[$did] = array('name' => $r['name'], 'did' => $r['did'],'idept' => $r['iddept'],
  17.        'corder' => $r['order'], 'dshow' => $r['show'], 'wydzial' => array());
  18.  
  19.        if (!empty($r['namecell']))
  20.        $listar[$did]['wydzial'][$cid] = array('namecell' => $r['namecell'], 'cid' => $r['cid'], 'idwysw'=>$r['idwysw'],
  21.        'position'=> $r['position'], 'osoby'=> array());
  22.    
  23.        if (!empty($r['nazwisko']))
  24.        $listar[$did]['wydzial'][$cid]['osoby'][] = array('nazwisko' => $r['nazwisko']);
  25.    }
  26. ?>


Zapytanie działa poprawnie jednak nie potrafię rozbić tego dobrze. Zastosowałem obsługę nospora, do tworzenia tablicy.
W chwili obecnej wygląd to tak:
Kod
[26] => Array
        (
            [name] => Biuro Rachunkowe
            [did] => 26
            [idept] => BF
            [corder] => 1
            [dshow] => 0
            [wydzial] => Array
                (
                    [190] => Array
                        (
                            [namecell] => Kasa
                            [cid] => 190
                            [idwysw] => BAF IV
                            [position] => 0
                            [osoby] => Array
                                (
                                    [0] => Array
                                        (
                                            [nazwisko] => Dobosz
                                        )
                                )
                        )
                )
        )


Wszystko ładnie niby działa, jednak dla tablicy osoby występuje więcej nazwisk a wywala mi jedną. Nie wiem czy robię to w dobrej formie, ale inaczej tego nie widzę.
Go to the top of the page
+Quote Post

Posty w temacie
- potreb   [PHP][MYSQL] Złożone zapytanie SQL   22.04.2009, 15:07:33
- - dr_bonzo   No to dobrze ci zrobilo, dla kazdego workers dodaj...   22.04.2009, 15:28:37
- - porady-it.pl   Łączyć możesz dowolną ilość tabel dodając kolejne ...   22.04.2009, 16:08:21
- - potreb   No okez prosty opis. Mam 3 tabele depart did - id...   22.04.2009, 18:44:19
- - phpion   No to trzaśnij zapytanie z dwoma JOINami łącząc ta...   22.04.2009, 18:46:41
- - potreb   Zrobiłem takie zapytanie wcześniej, ale i tak nie ...   22.04.2009, 20:11:35
- - dr_bonzo   U mnie dziala, i co mi zrobisz. Pokaz dane, ile p...   22.04.2009, 20:58:55
|- - phpion   Cytat(dr_bonzo @ 22.04.2009, 21:58:55...   23.04.2009, 08:31:38
- - porady-it.pl   Twoje zapytanie prawdopodobnie działa prawidłowo j...   23.04.2009, 08:37:38
- - potreb   Dzięki za podpowiedzi. Zrobiłem tak aby było wszys...   23.04.2009, 09:41:19
- - porady-it.pl   Zobacz w phpMyAdmin jaką listę rekordów zwróci zap...   23.04.2009, 10:44:33
- - potreb   Na pewno ze skryptem tworzącym tablicę bo jak wyśw...   23.04.2009, 12:08:10
- - nospor   [PHP] pobierz, plaintext <?phpif (!empty...   23.04.2009, 12:13:52
- - potreb   Oj próbowałem i dalej próbuje. Jak nadpisuje dane?...   23.04.2009, 12:25:45
- - nospor   CytatRobię tym samym sposobem co w tutorialu.no wl...   23.04.2009, 12:30:20
- - potreb   Dobijasz mnie   23.04.2009, 12:58:46
- - nospor   pozytywnie czy negatywnie? znaczy dziala czy nie?   23.04.2009, 12:59:48
- - potreb   Oczywiście że działa Dzięki wielkie.   23.04.2009, 13:55:49
- - nospor   Pisales ze robiles wg. mojego tutka a ja napisalem...   23.04.2009, 15:03:45


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 01:55