2016-06-15 3 views
-2

Ich möchte die Namen von Schauspielern finden, die eine maximale Anzahl von Filmen mit der Tabelle DERIVED durchgeführt haben. Wie kommt es zu diesem Fehler?Warum dieser Fehler angezeigt wird 'Fehlercode: 1146. Tabelle' sakila.t 'existiert nicht'?

meiner Anfrage

select actor from 
(
    select distinct(actor.first_name) as 'actor',count(film.film_id) as 'film_count' from actor 
    join film_actor on film_actor.actor_id=actor.actor_id 
    join film on film.film_id=film_actor.film_id 
    group by actor 
    order by film_count 
) as t 
where film_count=(select max(film_count) from t); 

my query + error message

database sakila

+2

fügen Sie Ihre Abfrage als Text –

+0

wählen Schauspieler aus ( \t select distinct (actor.first_name) als ‚Schauspieler zu bekommen ‘, count (film.film_id) als 'film_count' von Schauspieler \t film_actor auf film_actor.actor_id actor.actor_id = \t verbindet Film auf film.film_id film_actor.film_id = \t Gruppe von Schauspielern \t Sortieren nach film_count ) beizutreten als t wo film_count = (wählen Sie max (film_count) von t); –

Antwort

0
SELECT actor FROM 
    ( 
    SELECT DISTINCT(actor.first_name) AS 'actor', 
    COUNT(film.film_id) AS 'film_count' 
    FROM 
    actor 
    JOIN 
    film_actor 
    ON film_actor.actor_id=actor.actor_id 
    JOIN 
    film ON 
    film.film_id=film_actor.film_id 
    GROUP BY actor.first_name 
    ORDER BY film_count 
    ) AS t order by film_count desc 
LIMIT 1 

Sie können nicht in Unterabfrage direkt in einer where Klausel außerhalb der Unterabfrage Tabelle 't' erstellt beziehen. Verwenden Sie stattdessen die obige Abfrage. Ich habe das Ergebnis durch film_count Spalte sortiert in absteigender Reihenfolge und die erste Reihe genommen Schauspieler mit der größten Zahl für film_count

Verwandte Themen