2012-04-19 4 views
2

Quelle est l'algèbre relationnelle pour ces deux requêtes SQL:algèbre relationnelle pour l'opérateur limite

Select * from film where film_rating = 'PG' limit 20; 

Comment pouvons-nous montrer la limite?

Select * from actor, country where first_name='BOB' and country='In'; 

où prenom est la colonne de l'acteur et le pays est la colonne de la table de pays ... il n'y a pas de relation entre ces deux tables ... ils sont des tables indépendantes ...

donc peut-on utiliser l'opérateur rejoindre ici ?

+0

N'avez-vous pas une 3ème table avec des relations avec vos 2 tables? –

Répondre

5

À propos du limit en algèbre relationnelle. L'algèbre relationnelle traditionnelle ne supporte pas quelque chose comme limit dans SQL. Ce problème a été reconnu et étudié par Li, Chang, Ilyas et Song dans RankSQL: algèbre de requêtes et optimisation pour les requêtes top-k relationnelles (SIGMOD 2005). Ils ont proposé une fonction de notation monotone F qui classe les résultats par l'opérateur de tri tauF.

+0

1) En fait, je sais à propos de cet opérateur mais le problème est de savoir comment combiner select, projet et tauF Π film_id, titre, note (σ note = « PG » (film)) Ceci est une partie de sélection alors comment peut on le combine avec tauF? 2) De plus, tauF est-il destiné au tri, de sorte que l'opération LIMIT intégrée effectue une opération de tri? – Sam

0

Je ne réponds qu'à la question de me joindre ici.

Il existe une relation m: n entre acteurs et film. Il doit être réalisé à travers une table intermédiaire, disons film_actors. Aussi la table de pays a probablement un nom court comme "In" et un nom long comme "India".

SELECT film.title, film_actors.role_type, actor.name, country.long_name 
FROM 
    film 
    LEFT JOIN film_actors ON film.film_id = film_actors.film_id 
    LEFT JOIN actor ON film_actors.actor_id = actor.actor_id 
    LEFT JOIN country ON actor.country = country.short_name 

Si la table de pays n'a qu'une colonne avec ce nom court, cela n'a aucun sens de l'inclure dans votre requête. Faites-le seulement si le pays a des informations supplémentaires que vous souhaitez inclure.

J'ai utilisé GAUCHES EXTÉRIEURES GAUCHE ici. Ils ne sont demandés que si la table du côté droit n'a pas toujours d'enregistrements associés. Une bande dessinée n'a probablement pas d'acteurs. Sinon, utilisez INNER JOIN

Questions connexes