Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Releacje
Forum PHP.pl > Forum > Bazy danych > MySQL
kangur91
Mam trzy tabele . Authuser-Dane użytkownika oraz Dozwolone oraz Filmy.
w tabeli dozowlone mam rekordy:
1. user_id
2. film_id
3. nazwa

w tabeli uthuser:
1. id
2. pass
3. uname

W tabeli filmy:
1. id
2. sciezka
3. nazwa

Jak zrobić taką relację aby po dodaniu nowego rekordu w tabrli dozwolone pobierana była nazwa odpowiednio do podanego film_id??
kefirek
Może o takie coś chodzi
  1. <?php
  2. $wynik = mysql_query("SELECT u.*, p.* FROM dozwolone p LEFT JOIN filmy u ON p.film_id=u.id")
  3. ?>
kangur91
Bardziej chodzilo mi o to aby rekord nazwa w tabeli dozwolone automatycznie sie uzupełniał po dodaniu nowych danych.(względem film_id)
kefirek
Można też tak
  1. <?php
  2. $id_filmu=4;
  3. $nas  = mysql_query("SELECT * FROM  filmy WHERE id='$id_filmu'");
  4. list($id, $nazwa) = mysql_fetch_row($nas);
  5. $result = mysql_query("INSERT INTO dozowlone (user_id , film_id, nazwa) VALUES ('1', '$id', '$nazwa')");
  6. ?>
kangur91
No niby działa.
Ale czy nie możliwości aby wykonywane było to przez relację między tabelami?
kefirek
A tak ?

  1. <?php
  2. $result = mysql_query("INSERT INTO dozowlone (user_id , film_id, nazwa) VALUES ('1', '$id', 'SELECT nazwa FROM filmy WHERE id='$id'')");
  3. ?>
kangur91
Relacje, chodzi mi tu o opcje przy tworzeniu bazy. Tak abym nie musiał używać php. Czyli dodaje takie wartości:


1. user_id=5
2. film_id=5
3. nazwa= (i tu powinno się automatcznie wklepać nazwa z tabeli filmy odpowiednio do id)

Ale dzieki, że próbujesz pomóc.
MitS
może o to chodzi:

  1. CREATE TABLE filmy (
  2. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3. sciezka CHAR(255) NOT NULL,
  4. nazwa CHAR(255) NOT NULL,
  5.  
  6. PRIMARY KEY(id)
  7. ) ENGINE=InnoDB;
  8.  
  9. CREATE TABLE authuser (
  10. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  11. pass CHAR(32) NULL,
  12. uname CHAR(25) NULL,
  13.  
  14. PRIMARY KEY(id)
  15. )ENGINE=InnoDB;
  16.  
  17. CREATE TABLE dozwolone (
  18. authuser_id INTEGER UNSIGNED NOT NULL,
  19. filmy_id INTEGER UNSIGNED NOT NULL,
  20. nazwa CHAR(255) NULL,
  21.  
  22. PRIMARY KEY(authuser_id, filmy_id),
  23. INDEX fk1(authuser_id),
  24. INDEX fk2(filmy_id),
  25. FOREIGN KEY(authuser_id)
  26. REFERENCES authuser(id) ON DELETE CASCADE ON UPDATE CASCADE,
  27. FOREIGN KEY(filmy_id)
  28. REFERENCES filmy(id) ON DELETE CASCADE ON UPDATE CASCADE
  29. ) ENGINE=innoDB;



PS. z tą nazwą to bezsensu gdyż masz id filmu
kangur91
O to chidziło. Wielkie dzieki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.