Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak połaczyc 4 tablic, Łaczeni 4 tablic
Grizzli
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 1.03.2005

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


Jestem zaczynajacym uzytkowanikiem i razpoczynam dopiero programowac w Mysql
Musze napisac mała baze ofert pracy i mam problem z łaczenie tabel
tabele takie:

Pracodawcy|| ||Oferty_pracodawców|| Zawody || Wyksztalcenia

W tablicy zawody i wykrztalcenia maja byc przykładowe wyksztalcenia a w tablicy oferty_pracodawców ma byc odowałoanie do tych tablic i własnie nie bardzo wiem jak to zrobic i . Jak połaczyc te tablice ia takze jak zrobic zeby zapomoca kwarendy zrobi wyszukiwanie tych ofert ze wszystkich pol jakiego połaczenia uzyc

Przykładowae tablice
[SQL]
create table pracodawcy
(
idpracodawcy int unsigned not null auto_increment primary key,
firma ,
nazwisko
ulica
telefon
miejscowosc
wojew
kod_poczt
email
);





create table oferty_pracodawców
(
idoferty_praco int unsigned not null auto_increment primary key,
idpracodawcy int unsigned not null,
wykrztalcenie
zawod
opis text,
data date
);



create table zawody
(
idofert_praco int unsigned not null,
zawod
primary key ( zawod)
);




create table wykrztalcenie
(
idoferty_praco int unsigned not null,
wykrztalcenie
primary key ( wykrztalcenie)
);


Stworzyłem taką baze ale nie bardzo mi to chodzi nie wiem czy dobrze ustawiłem klucze , i jak zrobic połaczenie tych tabel zeby w formularzy po wybraniu jakiegos rekordu zeby wyswietalało to co wybiore a nie wyrzucało wszystko naraz



Z góry dziekuje za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fixer
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

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


Chcesz pobrać z tabel marki samochodów i wypisać przypisane do nich modele w postaci:

Kod
Audi: A6, A8, 100
BMW: 318, 750, Z3
Citroen: Berlingo, Xsara, C3


ROZWIĄZANIE
Często jest tak, że w jednej tabeli trzymane są jakieś ogólne pojęcia, do których przypisane są dane szczegółowe z drugiej tabeli. Mogą to być tytułowe marki i modele samochów, gatunki i podgatunki zwierząt bądź roślin, nazwy i typy monitorów lub pralek do prania.

Takich zależnośi jest wiele. Stwórzmy dwie tabele przechowujące dane o samochodach.

Kod
CREATE TABLE marki (
 id INT NOT NULL PRIMARY KEY,
 nazwa VARCHAR(100)
);

CREATE TABLE modele (
 id INT NOT NULL PRIMARY KEY auto_increment,
 markaid INT NOT NULL,
 nazwa VARCHAR(100)
);

INSERT INTO marki VALUES (1, "Audi");
INSERT INTO modele VALUES ("",1,"A6");
INSERT INTO modele VALUES ("",1,"A8");
INSERT INTO modele VALUES ("",1,"100");

INSERT INTO marki VALUES (2, "BMW");
INSERT INTO modele VALUES ("",2,"318");
INSERT INTO modele VALUES ("",2,"750");
INSERT INTO modele VALUES ("",2,"Z3");

INSERT INTO marki VALUES (3, "Citroen");
INSERT INTO modele VALUES ("",3,"Berlingo");
INSERT INTO modele VALUES ("",3,"Xsara");
INSERT INTO modele VALUES ("",3,"C3");

Nasze tabele prezentują się następująco:

+----+---------+
| id | nazwa   |
+----+---------+
|  1 | Audi    |
|  2 | BMW     |
|  3 | Citroen |
+----+---------+

+----+---------+----------+
| id | markaid | nazwa    |
+----+---------+----------+
|  1 |       1 | A6       |
|  2 |       1 | A8       |
|  3 |       1 | 100      |
|  4 |       2 | 318      |
|  5 |       2 | 750      |
|  6 |       2 | Z3       |
|  7 |       3 | Berlingo |
|  8 |       3 | Xsara    |
|  9 |       3 | C3       |
+----+---------+----------+

Pozostaje pytanie, jak pobrać z nich dane i wypisać w liniach tekstu poszczególne modele związane z markami. Oto odpowiedź:

  1. <?
  2. $baza = mysql_connect(&#092;"localhost\", \"user\", \"password\");
  3. mysql_select_db(&#092;"baza1\",$baza);
  4.  
  5. $marki = mysql_query(&#092;"SELECT * FROM marki;\");
  6.  
  7. for ($i=0;$i<mysql_num_rows($marki);$i++) {
  8.   $marka = mysql_fetch_array($marki);
  9.   echo $marka[&#092;"nazwa\"].\": \";
  10.   $modele = mysql_query(&#092;"SELECT * FROM modele 
  11.                          WHERE markaid={$marka[&#092;"id\"]}\");
  12.   for ($j=0;$j<mysql_num_rows($modele);$j++) {
  13.     $model = mysql_fetch_array($modele);
  14.     echo $model[&#092;"nazwa\"];
  15.     if ($j<mysql_num_rows($modele)-1) echo &#092;", \";
  16.   }
  17.   echo &#092;"<br>\";
  18. }
  19. mysql_close($baza);
  20. ?>

Na początku łączymy się z bazą danych i pobieramy zawartość tabeli marki. Na jej podstawie możemy określić ile jest marek i pobrać numer id przypisany do każdej z marek. Mamy też nazwę marki, którą od razu możemy wypisać na ekran.

Teraz w pętli, na podstawie numerów id kolejnych marek pobieramy wszystkie rekordy z tabeli modele, a więc modele przypisane do marki za pomocą numeru id.

Jeżeli modele występują, wypisujemy je na ekran. Dodatkowy warunek if sprawedza czy wypisywany jest ostatni element z modeli i nie dodaje za nim wtedy przecinka.

To wszystko - mamy w jednej linii wypisane marki z modelami.

Ten post edytował Fixer 8.03.2005, 19:07:27
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: 11.10.2025 - 08:58