2014-04-01 61 views
1

我幾年沒有寫SQL查詢,而且有點生疏。我正試圖編寫一個查詢來選擇基於給定演員姓名的所有電影。所以給定'sandra'這個名字,我想要選擇電影表中在主角表的first_name或last_name中有'sandra'的影片。有一個film_actor錶鏈接這兩個表,但我無法弄清楚如何正確地做到這一點。我得到的最接近的是SELECT * FROM film f INNER JOIN film_actor fa ON fa.actor_id = a.actor_id WHERE a.first_name LIKE '%sandra%';,它返回演員和電影的INNER JOIN表。這個結果還有一個film_id字段,我想用它來選擇電影表中的所有電影。對MySQL Sakila數據庫的簡單查詢

+0

演員表在哪裏加入? 'a.actor_id'但我沒有看到演員表 –

回答

1

我認爲這是你想要的。

SELECT --- generally doing select * from is a bad practice 
    f.films, 
    a.first_name, 
    a.last_name 
FROM films f 
JOIN film_actor fa ON fa.film_id = f.id --- JOIN defaults to INNER JOIN -- the film_actor table im assuming has an actor id and a film id to join off of 
JOIN actor a ON a.id = fa.actor_id 
WHERE a.last_name LIKE"%sandra%" OR a.first_name LIKE"%sandra%" --- if you want the first_name to only match "sandra" then just do = "sandra" instead of LIKE "%sandra%" 
+0

非常感謝。工作很好 –

+0

隨時:)感謝+1 –

1

使用此之一:

SELECT * 
FROM film f 
INNER JOIN film_actor fa 
ON f.film_id = fa.film_id 
INNER JOIN actor a 
ON fa.actor_id =a.actor_id 
WHERE a.first_name LIKE '%sandra%' OR a.last_name LIKE '%sandra%' 

我想,該表稱爲film和表稱爲film_actor與一個稱爲film_id柱,這是PK(主鍵)用於film表和FK相關聯的film_actor表。如果名稱與我所假設的不完全相同,請相應地更改它們。

現在,如果您加入上述三個表並在WHERE子句中使用OR語句,您將獲得您想要的結果。請致電here

+0

不是fa.actor_id = a.id而不是a.actor_id? –