Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql][php] wydruk, zapytanie jeden do wielu
pianta_d
post 4.01.2008, 17:26:53
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 4.01.2008, 17:30:20
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 4.01.2008, 17:43:42
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 4.01.2008, 17:55:49
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 4.01.2008, 18:05:44
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 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

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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 02:24