よろしくお願いします。 SQL Natural Join
-
自然の二つ以上の表の結合を使用していますdvdrentalデータベースにSQLクエリを構築
:だから私は先生に頼ましまった質問はこれでした追加の条件があります。たとえば、特定の顧客がレンタルした映画のタイトルを検索します。検索結果が何も返されない場合は、コースのニュースページのヒントに注意してください。ここで
での作業データベースイムのレイアウトです: http://www.postgresqltutorial.com/wp-content/uploads/2013/05/PostgreSQL-Sample-Database.png
ヒント、私たちにこのでした:自然が生成されない場合は参加 :
PostgreSQLのヒントDBの結果は、多くのテーブルに最後の更新:タイムスタンプフィールドがあるためです。したがって、自然結合は、そのフィールドと目的のフィールドに結合しようとします。
select * from film natural join inventory;
は、このために機能しません。空のテーブル(結果なし)が生成されます。
代わりに、select * from film, inventory where film.film_id = inventory.film_id;
を使用これは私がやったことです:
select *
from film, customer
where film.film_id = customer.customer_id;
問題は、私は特定の顧客を得ることができないです。
customer_id = 2;
してみましたが、エラーを返します。
本当に助けが必要です!
はあなたを共有することができる場所の追加を構築完全なクエリとあなたが得るエラー? –
これは、ペストのように '自然結合 'を避けるべき理由の優れた例です。 –
'film.film_id = customer.customer_id'という結合条件は完全に間違っています。 'film_id'は' customer_id'を参照しません。顧客がレンタルした映画を入手するには、映画、在庫、レンタル、および顧客に参加する必要があります。 'フィルムfから インベントリに参加するi ON f.film_id = i.film_id レンタルrに参加i.inventory_id = r.inventory_id お客様に参加するc ON c.customer_id = r.customer_id' –