W jednej tabeli wiele kluczów obcych - SELECT JOIN USING
| leonidas123 | 08.09.2008 15:10:38 | |
![]() | Witam:) Mam stworzony przy pomocy PHP pewną bazę danych a w niej tabele: $query ='CREATE TABLE zajecie ('. 'id_zajecie INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,'. 'id_sala INTEGER UNSIGNED NOT NULL,'. 'id_przedmiot INTEGER UNSIGNED NOT NULL,'. 'id_nauczyciel INTEGER UNSIGNED NOT NULL,'. 'id_klasa INTEGER UNSIGNED NOT NULL,'. 'dzien_tyg VARCHAR(15) NOT NULL,'. 'zmiana INTEGER UNSIGNED NOT NULL,'. 'data_dod DATETIME NOT NULL,'. 'PRIMARY KEY(id_zajecie),'. 'INDEX zajecie_FKIndex3(id_przedmiot),'. 'INDEX zajecie_FKIndex2(id_nauczyciel),'. 'INDEX zajecie_FKIndex5(id_klasa),'. 'INDEX zajecie_FKIndex4(id_sala))'; $result = mysql_query($query) or die ('nie mozna stworzyc tabeli: zajecie'); $query = 'CREATE TABLE sala ('. 'id_sala INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,'. 'symbol VARCHAR(6) NOT NULL,'. 'PRIMARY KEY(id_sala) )'; $result = mysql_query($query) or die ('nie mozna stworzyc tabeli: sala'); $query ='CREATE TABLE przedmiot ('. 'id_przedmiot INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,'. 'nazwa VARCHAR(45) NOT NULL,'. //'liczba_godz INTEGER UNSIGNED NOT NULL,'. 'PRIMARY KEY(id_przedmiot))'; $result = mysql_query($query) or die ('nie mozna stworzyc tabeli: przedmiot'); $query ='CREATE TABLE nauczyciel ('. 'id_nauczyciel INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,'. 'id_stanowisko INTEGER UNSIGNED NOT NULL,'. 'imie VARCHAR(20) NOT NULL,'. 'nazwisko VARCHAR(20) NOT NULL,'. 'tytul_nauk VARCHAR(20) NULL,'. 'pesel VARCHAR(13) NOT NULL,'. 'telefon VARCHAR(12) NULL,'. 'email VARCHAR(50) NULL,'. 'PRIMARY KEY(id_nauczyciel),'. 'INDEX nauczyciel_FKIndex1(id_stanowisko))'; $result = mysql_query($query) or die ('nie mozna stworzyc tabeli: nauczyciel'); $query ='CREATE TABLE klasa ('. 'id_klasa INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,'. 'id_nauczyciel INTEGER UNSIGNED NOT NULL,'. 'rok INTEGER UNSIGNED NOT NULL,'. 'symbol VARCHAR(3) NOT NULL,'. 'rocznik INTEGER UNSIGNED NOT NULL,'. 'PRIMARY KEY(id_klasa),'. 'INDEX klasa_FKIndex1(id_nauczyciel))'; $result = mysql_query($query) or die ('nie mozna stworzyc tabeli: klasa'); Opuściłem parę niepotrzebnych tabel:). Problem polega na tym że nie wiem jak sformułować zapytanie aby baza zwróciła mi dane z tabeli zajecie oraz wszystkich powiązanych z nią. Próbowałem np.: $query = "SELECT s.symbol, data_dod, k.symbol, k.rok FROM zajecie z ". "INNER JOIN (sala s, nauczyciel n, przedmiot p, klasa k)". " USING(s.id_sala, n.id_nauczyciel, p.id_przedmiot, k.id_klasa) ". " ORDER BY data_dod"; $result = mysql_query($query); I wywala błąd: Something is wrong in your syntax obok '(sala s, nauczyciel n, przedmiot p, klasa k) USING(s.id_sala, n.' w linii 1. | |
| doogi | 15.12.2008 19:44:43 | |
![]() | A czy przypadkiem zeby przypisac alias nazwie tabeli nie trzeba uzyc AS? Moge sie mylic, ale wg mnie powinno byc raczej:
| |

