Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]relacje dwóch tabel
Forum PHP.pl > Forum > Przedszkole
skatemen
Mam takie dwie tabele:
  1. CREATE TABLE `podopieczni` (
  2. `Id` int(11) NOT NULL AUTO_INCREMENT,
  3. `Nazwisko` varchar(40) NOT NULL,
  4. `Imie` varchar(20) NOT NULL,
  5. `Pesel` varchar(11) NOT NULL,
  6. `Data_urodzenia` datetime NOT NULL,
  7. `Adres_zamieszkania` varchar(120) DEFAULT NULL,
  8. `Opieka_Mops` int(20) NOT NULL DEFAULT '1',
  9. PRIMARY KEY (`Id`),
  10. UNIQUE KEY `Pesel` (`Pesel`),
  11. KEY `reference` (`Opieka_Mops`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
  13.  
  14.  
  15. CREATE TABLE `mops` (
  16. `Id_MOPS` int(11) NOT NULL AUTO_INCREMENT,
  17. `Placówka_MOPS` varchar(60) DEFAULT NULL,
  18. `Opiekun` varchar(40) DEFAULT NULL,
  19. PRIMARY KEY (`Id_MOPS`)
  20. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
  21.  
  22.  


Chciałbym zrobić tak aby w tabeli podopieczni w polu`Opieka_MOPS` pobierało dane z tabeli mops i wyświetlało pole `Placówka_MOPS`
Próbuje zrobić to tak:
  1. ALTER TABLE `podopieczni`
  2. ADD CONSTRAINT `podopieczni_ibfk_7` FOREIGN KEY (`Opieka_Mops`) REFERENCES `mops` (`Id_MOPS`);


Ma to jakieś ręce i nogi?
czy pole `Opieka_Mops` int(20) NOT NULL default '1' powinno byc text czy int?
maly_swd
  1. SELECT * FROM podopieczni p
  2. JOIN mops m ON p.Opieka_Mops=Id_MOPS
skatemen
ten select doda mi wszystkie pola z tabeli mops a mi nie o to chodzi.

Chcę żeby w polu Opieka_Mops w tabeli podopieczni wyświetlała się nazwa placówki pobrana z tabeli Mops a nie np numer id 1,2
naj
Nie za bardzo rozumiem problem.

Jeśli w tabeli 'mops' każda Placówka_MOPS ma unikalne ID to cóż za problem wstawić zamiast ID placówki jej nazwę słowami?

robisz select Placówka_MOPS FROM mops where Id_Mops=1,2 czy 3
i tą wartością UPDATE pola Opieka_Mops w tabeli podopieczni.

Oczywiście jeśli do Opieka_Mops wstawiasz coś tekstowego to musi być to typ VARCHAR.
skatemen
Przykład
tabela Mops
Id_Mops Placówka Mops
1 łódź Piotrkowska


Tabela podopieczni

Id Nazwisko Opieka_Mops
1 Kowalski (w baze wpisuje 1)

tabela podopieczni (wyświetlona zwykłemu użytkownikowi )

Id Nazwisko Opieka_Mops
1 Kowalski łódź Piotrkowska
phpion
Cytat(skatemen @ 1.12.2009, 21:08:42 ) *
ten select doda mi wszystkie pola z tabeli mops a mi nie o to chodzi.

To wskaż w zapytaniu, które kolumny na zwrócić.
  1. SELECT p.*, m.`Placówka_MOPS` FROM podopieczni p
  2. JOIN mops m ON p.Opieka_Mops=Id_MOPS

PS: nadawanie kolumnom nazw z polskimi znakami nie jest dobrym posunięciem.
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.