Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql][php] wydruk, zapytanie jeden do wielu
pianta_d
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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. ?>
Go to the top of the page
+Quote Post
Strzałek
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


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ąć.
Go to the top of the page
+Quote Post
pianta_d
post
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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
Go to the top of the page
+Quote Post
Strzałek
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


  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?
Go to the top of the page
+Quote Post
pianta_d
post
Post #5





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) "

Za wszelkie podpowiedzi będę wdzięczny

Ten post edytował pianta_d 4.01.2008, 18:51:10
Go to the top of the page
+Quote Post

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: 21.09.2025 - 07:23