3

これら2つのSQLクエリの関係代数とは何ですか。

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

どうすれば限界を示すことができますか?

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

ここで、first_nameはアクターの列であり、countryはcountryテーブルの列です...これら2つのテーブル間には関係がありません...これらは独立したテーブルです...

ここで結合演算子を使用できますか?

4

2 に答える 2

5

limit関係代数について。limit従来の関係代数は、SQLのようなものをサポートしていません。この問題は、RankSQLのLi、Chang、Ilyas、Songによって認識され、研究されています。クエリ代数とリレーショナルtop-kクエリの最適化(SIGMOD 2005)です。彼らは、ソート演算子tauFによって結果をランク付けする単調スコアリング関数Fを提案しました。

于 2012-04-28T19:44:11.217 に答える
0

私はここに参加することについての質問に答えているだけです。

俳優と映画の間にはam:nの関係があります。これは、中間テーブルを介して実現する必要がありますfilm_actors。また、国のテーブルには、おそらく「In」のような短い名前と「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

国のテーブルにこの短い名前の列が1つしかない場合、それをクエリに含めることはまったく意味がありません。国に含めたい追加情報がある場合にのみ実行してください。

ここではLEFTOUTERJOINSを使用しました。右側のテーブルに常に関連するレコードがあるとは限らない場合にのみ、これらが要求されます。漫画にはおそらく俳優がいません。それ以外の場合は使用INNER JOIN

于 2012-04-19T14:06:13.650 に答える