Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]relacje dwóch tabel, jak połączyć obie tabele
skatemen
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 23.11.2009

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
maly_swd
post
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


  1. SELECT * FROM podopieczni p
  2. JOIN mops m ON p.Opieka_Mops=Id_MOPS
Go to the top of the page
+Quote Post
skatemen
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 23.11.2009

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


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
Go to the top of the page
+Quote Post
naj
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 23.10.2009

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


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.
Go to the top of the page
+Quote Post
skatemen
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 23.11.2009

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


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

Ten post edytował skatemen 1.12.2009, 22:07:08
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post

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