Dwie tabele, jak połączyć w jedną ?

0

Witam,
pierwsza tabela to klasa (nr klasy i literka, np 1A, 4F itd), następna to uczniowie (imie, nazwisko). W systemie, każdy wychowawca dodaje tylko swoich uczniów. Mam tego typu problem, że nie wiem jak wyświetlić uczniów, którzy są tylko z 1A, a którzy tylko z 4F etc. Wybieram 1A, wyświetla się lista uczniów z 1A, a nie z innych klas. Ma ktoś jakiś pomysł na rozwiązanie tego problemu ??

0

Nie bardzo rozumiem problem. Tak samo jak każde inne tabele, czyli za pomoca klucza obcego. Proponuje żeby uczeń miał klucz obcy "nr klasy" i po tym kluczu będziesz to robił.

0

Jeżeli chcesz pobrać wszystkich z 1A i 4F, ale nie resztę, to możesz zrobić coś takiego:

SELECT u.* 
FROM Uczen u INNER JOIN Klasa k ON k.id=u.klasa_id 
WHERE k.nazwa IN ('1A', '4F')

lub

SELECT *
FROM Uczen u 
WHERE u.klasa_id IN (SELECT id FROM Klasa k WHERE k.nazwa IN ('1A', '4F'))
0

dzięki za pomoc, zaraz zajmę się kodem;)

0

jednak mam problem ze wstawieniem klucza obcego :(
czy mam wstawić klucz obcy do tabeli klasy, a później do tabeli uczniowe referencje? nie pamiętam za bardzo jak to się robiło. proszę o pomoc :>


CREATE TABLE IF NOT EXISTS `klasa` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rok` int(1) NOT NULL DEFAULT '1',
  `do_klasy` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `uczniowie` (
  `Nr_w_dzienniku` int(2) NOT NULL DEFAULT '0',
  `Imie` text CHARACTER SET utf8 NOT NULL,
  `Nazwisko` text CHARACTER SET utf8 NOT NULL,
  `Plec` enum('y','a') CHARACTER SET utf8 NOT NULL DEFAULT 'y',
  `Dzien` int(2) NOT NULL DEFAULT '0',
  `Miesiac` text CHARACTER SET utf8,
  `Rok` int(4) NOT NULL DEFAULT '0',
  `Miejsce_urodzenia` text CHARACTER SET utf8 NOT NULL,
  `Wojewodztwo` text CHARACTER SET utf8 NOT NULL,
  `Nr_ewidencji` varchar(7) CHARACTER SET utf8 DEFAULT NULL,
  `Klasa` int(2) DEFAULT NULL,
  PRIMARY KEY (`Nr_w_dzienniku`),
  KEY `Klasa` (`Klasa`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



I teraz wstawianie klucza obcego:

ALTER TABLE uczniowie ADD FOREIGN KEY (klasa) REFERENCES klasa(rok)

???

i poźniej od tego zapytanie:

SELECT u.* FROM uczniowie u INNER JOIN klasa k ON k.rok=u.klasa WHERE k.rok AND k.do_klasy IN ('3','C')
?

Mi wyświetla wszystkich uczniów, którzy są z 3 klasy, a ja chce np tylko z 3C i już lipa...

1 użytkowników online, w tym zalogowanych: 0, gości: 1