Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Zapytanie
--Andrzej--
post
Post #1





Goście







Witam,
może pokażę pierw jak sprawa wygląda aktualnie

mam w tabeli następujące rekordy



W tej chwili dane na stronie prezentowane są w ten sposób:



Chciałbym, aby wyglądało to w ten sposób:



czyli:
- rekordy które mają taki sam wpis w polu rodzaj i gatunek były wyświetlane pod jednym (zsumowana powierzchnia i zbiór) - przykład marchwi.
- nie powtarzać w każdym wierszu rodzaju tylko wylistować raz każdy, a pod każdym wszystkie gatunki do niego należące.

Czy jest możliwość wygenerowania listy w ten sposób? Podejrzewam, że coś z DISTINCT niestety nie wiem jak to ugryźć :/


Pozdrawiam
Andrzej
Go to the top of the page
+Quote Post
dadexix
post
Post #2





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

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


w mysql biegły nie jestem ale od czego jest forearch" title="Zobacz w manualu PHP" target="_manualsmile.gif?


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Żeby użyć foreach trzeba najpierw odpowiednio skonstruować tablicę asocjacyjną w momencie wczytywania danych z rekordów. Ja zorbiłabym to tak:

  1. <?php
  2. while($rekord = mysql_fetch_array($wynik_zapytania)){
  3.  $tabela[$rekord['rodzaj']][] = array('gatunek'=>$rekord['gatunek'],'rodzaj'=>$rekord['rodzaj'],'powierzchnia'=>$rekord['powierzchnia'],'zbior'=>$rekord['zbior']);
  4. }
  5.  
  6. echo '<ul>';
  7. foreach($tabela as $rodzaj => $spis){
  8.  echo "<li>$rodzaj <ul>";
  9. for($i=0;$i<count($spis);$i++){
  10.  echo '<li>'.$spis[$i]['gatunek'].' '.$spis[$i]['powierzchnia'].' ha '.$spis[$i]['zbior'].'kg</li>';
  11. }
  12.  echo '</ul></li>';
  13. }
  14. echo '<ul/>';
  15. ?>


Jeszcze jedno. Poszukaj w sieci info na temat redundancji danych i dowiedz się, czemu Twoja tabela w bazie jest źle skonstruowana smile.gif

Aha. Jeśli chcesz mieć na przykład posumowane dla każdego gatunku to musisz to załatwić w zapytaniu:

  1. SELECT rodzaj, gatunek,SUM(powierzchnia), SUM(zbior) FROM tabela GROUP BY rodzaj,gatunek


Ten post edytował JoShiMa 8.07.2008, 14:49:02


--------------------
Go to the top of the page
+Quote Post
--Andrzej--
post
Post #4





Goście







Bardzo serdecznie dziękuję za pomoc, dokładnie o to mi chodziło. Jednak bym sobie nie poradził z tym smile.gif, jeszcze raz dziękuję i pozdrawiam
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 - 11:37