2014-10-19 28 views
1

我是新來的sql並試圖執行查詢。SQL查詢從兩個表中進行選擇並與第三個進行比較

我創建了下列表格,它們正常工作。

create table ACTOR 
(
    actor_name varchar(30), 
    gender varchar(8), 
    date_of_birth date, 
    primary key(actor_name) 
); 

我總是被卡在如何與cast_memeber表進行比較。

select movie_title as MOVIE_TITLE 
+0

如何比較,你的意思是一個'JOIN'用'CAST_MEMBER'? – 2014-10-19 05:06:40

+0

這是我到目前爲止嘗試的 SQL> select movie_title as MOVIE_TITLE,release_year as RELEASE_YEAR,actor.actor_name,actor.gender from MOVIE movie,ACTOR actor 2 where actor.actor_name = CAST_MEMEBER.actor_name; – Maddy 2014-10-19 05:09:36

+0

我們使用表和列別名來**更改我們用來引用對象的名稱**。除非您覺得您需要打字練習,否則將'movie_title設置爲MOVIE_TITLE'是沒有意義的。 – APC 2014-10-19 05:14:55

回答

2

對於有條件的數,您可以使用SUM()與表達,加入你的CAST_MEMEBERACTOR表使用COUNT()數爲電影的所有成員和表達總和將結果作爲布爾所以這樣做會給你算根據您的情況

SELECT 
    m.movie_title, 
    m.release_year, 
    SUM(a.gender = 'female') no_of_female_members, 
    SUM(a.gender = 'male') no_of_male_members, 
    COUNT(c.actor_name) no_of_all_members 
FROM 
    MOVIE m 
    LEFT JOIN CAST_MEMEBER c 
    ON (m.movie_title = c.movie_title AND m.release_year = c.release_year) 
    JOIN ACTOR a 
    ON (a.actor_name = c.actor_name) 
GROUP BY m.movie_title,m.release_year 
+0

@M_Khalid,感謝您的回覆,但只是一個後續問題, no_of_female_members,<---這是否作爲一個變量存儲所有女性的數量?只是有點困惑。 謝謝 – Maddy 2014-10-19 05:24:14

+0

@Mani它是SUM的一個別名(a.gender ='female')'它不是一個變量只是當前查詢的臨時列 – 2014-10-19 05:26:42

+1

非常感謝您幫助我理解 – Maddy 2014-10-19 05:28:14

1
select movie_title, 
     release_year, 
     count(decode(t.gender,'FEMALE',1)) female_actors 
from movie m , (select c.movie_title 
         a.gender, 
         c.release_year 
       from cast_member c, actor a 
       where c.movie_title = a.movie_title 
        and c.actor_name = a.actor_name) t 
where m.movie_title = t.movie_title 
    and m.release_year = t.release_year 
group by m.movie_title ,t.release_year 
相關問題