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
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...