Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Baza danych - relacje
kwi4tusz3k
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.11.2012

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


Witam, nie wiem czy pisze dobrym watpu. Chodzi mi o baze danych w phpmyadmin. Problem polega na tym ze nie moge stworzyc relacji pomiedzy tabelami.
Tabela1: id, imie, nazwisko, data, numer telefonu, adres Tabela2: id, imie, nazwisko, obecnosc. Chcialbym aby jesli dodajemy do Tabela1 osobe to Tabela2 pobierala imie i nazwisko. Czy mozna zrobic takie powiazanie? Czy prosciej zrobic w formularzu zeby osoby byly dodawane do dwoch tabel?

Ten post edytował kwi4tusz3k 31.01.2013, 11:06:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Odpowiadając ogólnie - da się to zrobić za pomocą tzw. triggerów (AFTER INSERT na Tabela1 - w nim dodajemy imie i nazwisko do Tabela2 - możesz o tym poczytać).

A teraz na poważnie - robisz coś na maksa źle. Jeśli masz taką strukturę:

Tabela1

id | imie | nazwisko | data | numer_telefonu | adres

Tabela2

id | imie | nazwisko | obecnosc

To wystarczy ją znormalizować. Objaśnię Ci, po krótce o co chodzi ale też o tym poczytaj.

Zostaw sobie tabelę 'Tabela1' tak jak jest natomiast Tabela2 zrób tak:

Tabela2

id | id_Tabela1 | obecnosc

Imię i nazwisko już masz w tabeli 'Tabela1' więc nie ma sensu wpisywać jej znowu do 'Tabela2'. Wystarczy dodać relację do odpowiedniego rekordu z tabeli 'Tabela1'.

Przy dodawaniu nowego uzytkownika dodajesz go normalnie do Tabela1 a potem tworzysz rekord w Tabela2 z id_Tabela2 takim jakie ID ma ten ostatni wpis z Tabela1.

Przy pobieraniu danych z Tabela2 wystarczy wówczas prosty join:

  1. SELECT t2.id, t1.imie, t1,nazwisko, t2.obecnosc FROM Tabela2 t2
  2. JOIN Tabela1 t1 ON t2.id_Tabela1 = t1.id


Ten post edytował Sephirus 31.01.2013, 11:17:53
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 23:06