ORA-00904

CHRYSCHTL

Benutzer
Beiträge
9
Hey Leute,
ich weiß einfach nicht warum er mir den Fehler bringt -.-
Vll. kann mir ja jemand von euch helfen...

CREATE VIEW Liebling AS

SELECT C.first_name AS Kunden_Vorname, C.last_name AS Kunden_Nachname,
A.first_name AS Actor_Vorname, A.last_name AS Actor_Nachname, A.actor_id, count(FA.film_id) AS Anzahl_der_Filme
FROM Customer C, Rental R, Inventory I,Film_Actor FA, Actor A
WHERE C.customer_id = R.customer_id
AND R.inventory_id = I.inventory_id
AND I.film_id = FA.film_id
AND FA.actor_id = A.actor_id

GROUP BY C.first_name, C.last_name,A.first_name, A.last_name, A.actor_id
ORDER BY C.first_name, C.last_name, A.actor_id;

SELECT T.Kunden_Vorname, T.Kunden_Nachname, T.Actor_Vorname, T.Actor_Nachname, T.actor_id, T.Anzahl_der_Filme
FROM Liebling T
JOIN (SELECT Kunden_Vorname, Kunden_Nachname, MAX(Anzahl_der_Filme) AS Maximale_Anzahl
FROM Liebling
GROUP BY Kunden_Vorname, Kunden_Nachname) X
ON T.Kunden_Vorname = X.Kunden_Vorname
AND T.Kunden_Nachname = X.Kunden_Nachname
AND T.Anzahl_der_Filme = X.Maximale_Anzahl;
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.532
Hey Leute,
ich weiß einfach nicht warum er mir den Fehler bringt -.-
Vll. kann mir ja jemand von euch helfen...

CREATE VIEW Liebling AS

SELECT C.first_name AS Kunden_Vorname, C.last_name AS Kunden_Nachname,
A.first_name AS Actor_Vorname, A.last_name AS Actor_Nachname, A.actor_id, count(FA.film_id) AS Anzahl_der_Filme
FROM Customer C, Rental R, Inventory I,Film_Actor FA, Actor A
WHERE C.customer_id = R.customer_id
AND R.inventory_id = I.inventory_id
AND I.film_id = FA.film_id
AND FA.actor_id = A.actor_id

GROUP BY C.first_name, C.last_name,A.first_name, A.last_name, A.actor_id
ORDER BY C.first_name, C.last_name, A.actor_id;

SELECT T.Kunden_Vorname, T.Kunden_Nachname, T.Actor_Vorname, T.Actor_Nachname, T.actor_id, T.Anzahl_der_Filme
FROM Liebling T
JOIN (SELECT Kunden_Vorname, Kunden_Nachname, MAX(Anzahl_der_Filme) AS Maximale_Anzahl
FROM Liebling
GROUP BY Kunden_Vorname, Kunden_Nachname) X
ON T.Kunden_Vorname = X.Kunden_Vorname
AND T.Kunden_Nachname = X.Kunden_Nachname
AND T.Anzahl_der_Filme = X.Maximale_Anzahl;


Ohne jetzt Oraggle sonderlich gut zu kennen, aber laut Guugel ist die Fehlermeldung ein Hinweis auf ungültigen Bezeichner. Ich könnte mir vorstellen, daß es da knallt, wo Du auf X.<Spalte> zugreifst, denn ich sehe keine Definition für den Alias X, Du hast nur als Table-Alias T und Maximale_Anzahl.

Andreas
 

akretschmer

Datenbank-Guru
Beiträge
9.532

Hrm, strange. Ich habe den VIEW als Table nachgebaut:

Code:
test=*# \d liebling
        Table "public.liebling"
      Column      |  Type   | Modifiers
------------------+---------+-----------
 kunden_vorname   | text    |
 kunden_nachname  | text    |
 actor_vorname    | text    |
 actor_nachname   | text    |
 actor_id         | integer |
 anzahl_der_filme | integer |

test=*# select t.kunden_vorname, t.kunden_nachname, t.anzahl_der_filme from liebling t join (select kunden_vorname, kunden_nachname, max(anzahl_der_filme) as maximale_anzahl from liebling group by 1,2) x on t.kunden_vorname=x.kunden_vorname and t.kunden_nachname=x.kunden_nachname and t.anzahl_der_filme=x.maximale_anzahl;
 kunden_vorname | kunden_nachname | anzahl_der_filme
----------------+-----------------+------------------
(0 rows)

Gut, da ist nix drin, aber es kommt kein Syntaxfehler oder so. An der Stelle weiß ich jetzt auch ned weiter, hab kein ORA sondern PostgreSQL, was aber recht ähnlich ist angeblich...


Andreas
 

CHRYSCHTL

Benutzer
Beiträge
9
Problem gelöst ^^ ich hab einfach die Tabelle gelöscht und es nochmal probiert ;) dafür hab ich jetzt so viel zeit vergeudet -.-
Wenn du Interesse hast, ich hab noch ein paar Aufgaben, die ich machen muss :D:D
 

CHRYSCHTL

Benutzer
Beiträge
9
oh nein ich bin doch nur ein armer Student ^^
also dann mal los

Geben Sie f¨ur jeden Kunden (first name, last name) und Kategorie (name) aus, wieviele
Filme (Anzahl) er/sie sich aus dieser Kategorie ausgeliehen hat.Wenn er sich
aus einer Kategorie bisher noch nichts ausgeliehen hat, dann geben Sie f¨ur diese
Kombination Kunde-Kategorie die Anzahl 0 aus. Sortieren Sie die Ausgabe nach
last name, first name (beide alphabetisch aufsteigend) und Anzahl (absteigend).

meine Tabellen :
Customer ( customer id, store id!Store, first name, last name, email,
address id!Address, active, create date, last update)
Film ( film id, title, description, release year, language id!Language,
original language id!language, rental duration, rental rate, length,
replacement cost, rating, special features, last update)
Film Category ( film id!Film, category id!Category, last update)
Inventory ( inventory id, film id!Film, store id!Store, last update)
Rental ( rental id, rental date, inventory id!Inventory, customer id!Customer,
return date, staff id!Staff, last update)
 

CHRYSCHTL

Benutzer
Beiträge
9
SELECT C.first_name, C.last_name, CA.name, count(FC.category_id) AS Anzahl
FROM Customer C, Rental R, Inventory I,Film_Category FC, Category CA

WHERE C.customer_id = R.customer_id
AND R.inventory_id = I.inventory_id
AND I.film_id = FC.film_id
AND FC.category_id = CA.category_id
Group by C.first_name,C.last_name, CA.name


So, das ist der erste Teil. Weißt du zufällig wie das mit der Null gehen soll?
 
Werbung:
Oben