Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wypełnianie tabeli - problem
krzesik
post
Post #1





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

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


Witam, mam problem z wypełnianiem tabeli pewnie sprawa trywialna, ale ogarnęła mnie "pomroczność" i już nie mam siły.....
Potrzebuję wygenerować tabelę w której 5 pierwszych nagłówków jest stałych, kolejne są generowane z bazy

imię i nazwisko | numer | adres | telefon | wartość z bazy 1 | wartość z bazy 2 | wartość z bazy 3 | wartość z bazy n |

a teraz powinieniem wypełniać kolejny rekord już z danymi tylko z bazy

Adam Kowalski | 123 | jakaś ulica | 800 700 700 | 222 | 333 | 444 | nnn |

proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
widmo_91
post
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Masz relacje wiele do wiele więc powinieneś mieć jeszcze dodatkową tabelę, struktura powinna wyglądać jakoś tak:

TABELA 1
id_tab1, imie i nazwisko, numer, adres, telefon
TABELA 2
id_tab2, nazwa
TABELA 3
id_tab1, id_tab2, ilosc

Korzyści z tego płynące:
- zoptymalizowanie (zmniejszenie rozmiaru) bazy danych
- łatwiejsze zapytania szczególnie to z pierwszego posta
- spójność danych, łatwiejsze przetwarzanie danych

Algorytm rozwiazania:
  1. "SELECT t1.imie, t1.nazwisko, ".[b]generujPivot() [/b]."
  2. FROM tabela1 t1 LEFT JOIN tabela3 t3 ON t3.id_tab1 = t1.id_tab1
  3. LEFT JOIN tabela2 t2 ON t2.id_tab2 = t3.tab_2
  4. GROUP BY t1.id_tab1, t1.imie, t1.nazwisko"



  1. pobierz, plaintext
  2. function generujPivot()
  3. {
  4.  
  5. // $tablica = tablica wszystkich wartosci z tabeli t3
  6. // coś w stylu:
  7. $result = $result = mysql_query("SELECT * FROM tabela3");
  8. $tablica = array();
  9. while ($row = mysql_fetch_assoc($result)) {
  10. $tablica[] = $row;
  11. }
  12.  
  13. // $kolumna = klucz obcy z tabeli t3 do t2 w tym przypadku t3.id_tab2
  14. $kolumna = "t3.id_tab2";
  15.  
  16. // $wartosc = wyswietlana wartość w tabeli wynikowej
  17. $wartosc = "t2.nazwa";
  18.  
  19.  
  20. $zapytanie = '';
  21. for ($i = 0; $i < count($tablica); $i++) {
  22. $zapytanie .= "max(case when $kolumna = {$tablica[$i]["id"]}
  23. then $wartosc end) AS `{$tablica[$i]["nazwa"]}`, ";
  24. }
  25. return rtrim($zapytanie, ', ');
  26. }

(IMG:style_emoticons/default/wink.gif)

Ten post edytował widmo_91 15.03.2014, 13:53:53
Go to the top of the page
+Quote Post

Posty w temacie


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 - 08:19