Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] wydruk
Forum PHP.pl > Forum > Przedszkole
pianta_d
Witam

W jednej tabeli przechowuję informacje o zdjęciach, natomiast w drugiej przechowuję informacje o przekazaniach zdjęć.
Teraz problem, jak wydrukować tą relację w taki sposób:


id 1 nr_zdj 3456 przekazanie 2008-01-01 Slawek, 2008-01-03 Jarek, 2008-01-04 Ktos
id 2 nr_zdj 4567 przekazanie 2006-01-02 ktoś
...

Napisałem kilka kodów, ale każdy wykonuje się bardzo długo (fakt, w tabeli zdjęć jest około 10.000 wpisów, w tabeli przekazań około 30.000), a i efekt jest do bani.

  1. <?php
  2. $result = mysql_query("SELECT * FROM 30_rej");
  3.  
  4. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  5. printf ("ID: %s Nazwa: %s <BR>", $row[0], $row[1]);
  6.  
  7.  
  8. $druga = mysql_query("SELECT 89_rej.id, 89_rej.nr_zdj,
  9. 89_przek.id_tbl_rejestr, 89_przek.jednostka_przekazania
  10. FROM `89_przek`,`89_rej` 
  11. WHERE `89_przek`.`id_tbl_rejestr` = `89_rej`.id 
  12. order by 89_przek.id_tbl_rejestr");
  13.  
  14. while ($wiersz = mysql_fetch_array($druga, MYSQL_NUM)) {
  15. printf ("I: %s N: %s <BR>", $wiersz[0], $wiersz[1]);
  16. }
  17. }
  18. ?>
Strzałek
Ojej!! Zapytanie SQL w pętli!?

Jak sam piszesz mamy do czynienia z relacjami, więc trzeba użyć JOINÓW. Pokaż jakie masz tabele i które kolumny chcesz wyciągnąć.
pianta_d
W pierwszej tabeli mam 89_rej

id
nr_zdj
data_zdj
gdzie

w drugiej 89_przek

id
id_tbl_przek
data_przek
komu

Potrzebuję wyświetlić raport z subdetail 89_przek ile jest przekazań dla jednego zdjęcia tyle na wydruku.

O JOINach też myślałem, ale chyba z wykonaniem jest coś nie tak

  1. SELECT * FROM 89_rej INNER JOIN 89_przek ON (89_rej.id=89_przek.id_tbl_rejestr)
  2. ORDER BY 89_przek.id_tbl_rejestr
Strzałek
  1. SELECT r.*, p.data_przek, p.komu
  2. FROM 89_rej r
  3. INNER JOIN 89_przek p ON r.id = p.id_tbl_rejestr
  4. ORDER BY p.id_tbl_rejestr


Hmm, chyba o to chodzi?
pianta_d
OK wielkie dzięki, wszystko śmiga jak złoto.

Ale teraz jak wyświetlić przekazania jeden pod drugim bez ponownego wyświetlania rekordu głównego questionmark.gif

EDIT

Ale zauważyłem (dopiero teraz), że po zastosowaniu tego zapytania nie wyświetla wszystkich rekordów z tabeli głównej, tzn. wyświetla tylko te, które mają przekazania, natomiast te bez przekazań nie są wyświetlane. Potrzebne mi są wszystkie wacko.gif

EDIT

Już sobie poradziłem
  1. SELECT 89_rej.id, 89_rej.nr_zdj, 89_rej.DATA, 89_przek.DATA, 89_przek.komu
  2. FROM 89_rej LEFT OUTER JOIN 89_przek ON 89_rej.id = 89_przek.id_tbl_rejestr


Ale w dalszym ciągu pozostaje kwestia wydruku.

cit "Ale teraz jak wyświetlić przekazania jeden pod drugim bez ponownego wyświetlania rekordu głównego questionmark.gif"

Za wszelkie podpowiedzi będę wdzięczny
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.