Oracle SQL mit Zwischenergebnis rechnen

NikeAir

Mitglied
Hallo Leute,

ich musste gerade eine Anfrage in Oracle SQL machen, in der ich zwei geschachtelte Anfragen machen musste, die mir jeweils einen Wert liefern (mit Count) und diese dann miteinander verrechnen. Ich sollte einfach herausfinden, wie viele der Filme, die in diesem Jahr produziert wurden einen Vorgänger hatten. Ist ja auch egal. Die einzelnen Parts meiner Abfrage liefern das gewünschte Ergebnis, jedoch bekomme ich bei dem verrechnen immer eine Fehlermeldung ausgegeben. Es dürfte eigentlich ein ziemlich kleiner Fehler sein. Hier mein Code:

SQL:
	select succ.production / alle.production * 100        --eigentliche Rechnung

	from

	(Select count (p.production)

	FROM Production p where year ='2013') alle,        --Alle Filme 2013

	(SELECT count(p.production)

	FROM Production p

	where exists(

	select * from (

		select L1.production1

		from LINK L1

		where exists (

			select * from (

			select L2.production1

			from LINK L2

		)L2

        WHERE L1.PRODUCTION2 = L2.PRODUCTION1

    ) AND lower(L1.LINK) = 'follows'

  	) L1

	  WHERE p.PRODUCTION = L1.PRODUCTION1            --Nachfolger 2013

	)AND lower(p.year) like '%2013%') succ

Ich würde mich sehr freuen, wenn mir jemand helfen könnte 🙂

Viele Grüße
NikeAir222
 
Zuletzt bearbeitet:
Moin,

welche Fehlermeldung denn nur ???:L
Wie sind die Tabellen denn aufgebaut ???:L

Wengistens ein paar Infos wären nett ..... :autsch:

Gruß
Klaus
 
die from clause kannst du so nicht zusammenbauen

SQL:
    SELECT succ.production / alle.production * 100        --eigentliche Rechnung
     
        FROM (select
     
        (SELECT count (p.production)
     
        FROM Production p WHERE year ='2013') alle,        --Alle Filme 2013
     
        (SELECT count(p.production)
     
        FROM Production p
     
        WHERE EXISTS(
     
        SELECT * FROM (
     
            SELECT L1.production1
     
            FROM LINK L1
     
            WHERE EXISTS (
     
                SELECT * FROM (
     
                SELECT L2.production1
     
                FROM LINK L2
     
            )L2
     
            WHERE L1.PRODUCTION2 = L2.PRODUCTION1
     
        ) AND lower(L1.LINK) = 'follows'
     
        ) L1
     
          WHERE p.PRODUCTION = L1.PRODUCTION1            --Nachfolger 2013
     
        )AND lower(p.year) LIKE '%2013%') succ from dual)

so müsste es zumindest funktionieren
 

Neue Themen


Zurück
Oben