Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [oracle]trudna perspektywa(przynajmniej dla mnie)
Forum PHP.pl > Forum > Bazy danych > Oracle
asterix1983
Więc chce sobie zrobić zapytanie, które by zwracało mi wartości:
P.PRZEDMIOT_NAZWA,P.PRZEDMIOT_TEMATYKA
RP.TRP_PROWADZACY
R.RODZAJ_TYP
BN.NOTATKA_NAZWA,BN.NOTATKA_OPIS
TWORCA
BN.NOTATKA_DATA_TWORZENIA
OSOBA MODYFIKUJACA
BN.NOTATKA_DATA_MODYFIKACJI

W tym celu korzystam z tabel:
T_PRZEDMIOT P,T_RODZAJ R,T_RODZAJE_PRZEDMIOTU RP,T_OSOBY O,T_BAZA_NOTATEK BN

a oto one:
  1. CREATE TABLE T_PRZEDMIOT(
  2. PRZEDMIOT_ID NUMBER(2,0) NOT NULL PRIMARY KEY,
  3. PRZEDMIOT_NAZWA CHAR(150) NOT NULL,
  4. PRZEDMIOT_TEMATYKA CHAR(250)
  5. );
  6.  
  7. CREATE TABLE T_RODZAJ(
  8. RODZAJ_ID NUMBER(2,0) NOT NULL PRIMARY KEY,
  9. RODZAJ_TYP CHAR(50) NOT NULL
  10. );
  11.  
  12. CREATE TABLE T_RODZAJE_PRZEDMIOTU(
  13. TRP_ID NUMBER(3,0) NOT NULL PRIMARY KEY,
  14. TRP_PROWADZACY CHAR(70) NOT NULL,
  15. RODZAJ_ID NUMBER(2,0) NOT NULL REFERENCES T_RODZAJ(RODZAJ_ID),
  16. PRZEDMIOT_ID NUMBER(2,0) NOT NULL REFERENCES T_PRZEDMIOT(PRZEDMIOT_ID)
  17. );
  18.  
  19. CREATE TABLE T_OSOBY(
  20. OSOBA_ID NUMBER(3,0) NOT NULL PRIMARY KEY,
  21. OSOBA_NAZWISKO CHAR(40) NOT NULL,
  22. OSOBA_IMIE CHAR(30) NOT NULL,
  23. OSOBA_DATA_URODZ DATE NOT NULL,
  24. OSOBA_ADRES_MIASTO CHAR(40) NOT NULL,
  25. OSOBA_ADRES_ULLICA CHAR(40) NOT NULL,
  26. OSOBA_ADRES_NUM_MD CHAR(10) NOT NULL,
  27. OSOBA_NR_TEL_DOM NUMBER(13,0),
  28. OSOBA_NR_TEL_KOM NUMBER(13,0),
  29. OSOBA_ZDJECIE BLOB
  30. );
  31.  
  32. CREATE TABLE T_BAZA_NOTATEK(
  33. TBN_ID NUMBER(5,0) NOT NULL PRIMARY KEY,
  34. NOTATKA_NAZWA CHAR(100) NOT NULL,
  35. NOTATKA_OPIS CHAR(250),
  36. NOTATKA_ZAWARTOSC_TEXT CLOB NOT NULL,
  37. NOTATKA_DATA_UTW DATE NOT NULL,
  38. NOTATKA_ROZMIAR_SLOWO NUMBER(10,0),
  39. NOTATKA_ROZMIAR_STRON NUMBER(5,0),
  40. NOTATKA_ROZMIAR_BIT NUMBER (5,0),
  41. TRP_ID NUMBER(2,0) REFERENCES T_RODZAJE_PRZEDMIOTU(TRP_ID),
  42. OSOBA_TWORZACA_ID NUMBER(3,0) REFERENCES T_OSOBY(OSOBA_ID),
  43. NOTATKA_DATA_TWORZENIA DATE NOT NULL,
  44. OSOBA_MODYFIKUJACA_ID NUMBER(3,0) REFERENCES T_OSOBY(OSOBA_ID),
  45. NOTATKA_DATA_MODYFIKACJI DATE
  46. );


a oto moje wypociny:
  1. CREATE OR REPLACE VIEW PRZEDMIOTY_Z_NOTATKAMI
  2. AS SELECT P.PRZEDMIOT_NAZWA,P.PRZEDMIOT_TEMATYKA,
  3. RP.TRP_PROWADZACY,
  4. R.RODZAJ_TYP,
  5. BN.NOTATKA_NAZWA,BN.NOTATKA_OPIS,
  6. (SELECT CONCAT(O.OSOBA_IMIE,O.OSOBA_NAZWISKO) "TWORCA" FROM T_OSOBY O, T_BAZA_NOTATEK BN WHERE O.OSOBA_ID=BN.OSOBA_TWORZACA_ID),
  7. BN.NOTATKA_DATA_TWORZENIA,
  8. (SELECT CONCAT(O.OSOBA_IMIE,O.OSOBA_NAZWISKO) "OSOBA MODYFIKUJACA" FROM T_OSOBY O, T_BAZA_NOTATEK BN WHERE O.OSOBA_ID=BN.OSOBA_MODYFIKUJACA_ID),
  9. BN.NOTATKA_DATA_MODYFIKACJI
  10. FROM T_PRZEDMIOT P,T_RODZAJ R,T_RODZAJE_PRZEDMIOTU RP,T_OSOBY O,T_BAZA_NOTATEK BN
  11. WHERE P.PRZEDMIOT_ID=RP.PRZEDMIOT_ID AND RP.RODZAJ_ID=R.RODZAJ_ID AND BN.TRP_ID=RP.TRP_ID
  12. ORDER BY P.PRZEDMIOT_NAZWA,RP.TRP_PROWADZACY,BN.NOTATKA_DATA_TWORZENIA;

jak wywołałem kodzik to wywaliło mi błąd: ORA-00998 w lini 6 (przy select)
mógł bym prosić o pomoc w rozwiązaniu problemu

ps.
Kożystam z oracle 10g express
wijet
Pierwszy blad jaki sie rzuca w oczy to ze podzapytania w specyfikacji kolumn musza byc nazwane aliasem
np. tu musisz nadac alias

  1. (SELECT CONCAT(O.OSOBA_IMIE,O.OSOBA_NAZWISKO) "TWORCA" FROM T_OSOBY O, T_BAZA_NOTATEK BN WHERE O.OSOBA_ID=BN.OSOBA_TWORZACA_ID)
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.