2013-03-25 62 views
0

目前,我有這樣的SQL查詢,試圖從collection_actors獲取信息:獲取信息與JOIN

SELECT ca.id_imdb AS IMDb_ID, 
     caat.id_collection AS collection_ID, 
     ca.data_name AS actors_name 

FROM collection_actors AS ca 
JOIN collection_actors_assignedto AS caat 
ON ca.id_imdb = caat.id_collection 
WHERE caat.id_collection = 'tt1104001' 

這裏有兩個表的數據庫:

collection_actors 
    id 
    id_user 
    id_imdb 
    data_name 
    date_birth 
    date_added 
    date_edited 
    information_ipaddress 


collection_actors_assignedto 
    id 
    id_user 
    id_actor 
    id_collection 
    date_added 
    information_ipaddress 

的問題是,即使有數據與IMDb ID匹配,我也無法從collection_actors獲取任何信息!我怎樣才能使這個工作?

+0

'id_collection'的數據類型是什麼?如果它定義爲'int',則使用'WHERE caat.id_collection = tt1104001'。 – 2013-03-25 14:08:39

+3

我認爲你的意思是_tables_,而不是_databases_?如果是這樣,請相應地更正標題和問題。 – CBroe 2013-03-25 14:09:42

+0

你確定你的'collection_actors_assignedto'表中有一個caat.id_collection ='tt1104001'嗎? – 2013-03-25 14:13:42

回答

0

有這個SQL片段一去,這是根據你的代碼,但你需要確保在id_imdb領域id_collection匹配數據的價值,否則你會從未得到任何結果。

SELECT ca.id_imdb AS IMDb_ID 
, caat.id_collection AS collection_ID 
, ca.data_name AS actors_name 
FROM collection_actors AS ca 
INNER JOIN collection_actors_assignedto AS caat ON ca.id_imdb = caat.id_collection 
WHERE caat.id_collection = 'tt1104001' 
+0

感謝您的支持,或者您或者Matheus Lopes查詢都可以。我試圖在我的foreach循環中寫入$ actor ['name']'和'$ actor ['actors_name']'這些查詢(相互測試) - 結果爲空(沒有數據顯示) – Erik 2013-03-25 15:18:53

+0

只要兩個表中有相關​​的匹配數據,就應該這樣工作。也供參考,它不是一個循環,它的一個SQL查詢;) – llanato 2013-03-25 15:22:25

+0

是的。它也工作:)我錯過了'id_collection'是爲電影ID而不是演員ID。 'caat.id_collection'因此將是'caat.id_actor'。一個簡單的錯誤從我的部分*慚愧*非常感謝你:D和循環演員我需要一個循環功能,如'foreach';)但我知道你的意思:) – Erik 2013-03-25 15:37:04

0

試試這個:

SELECT ca.id_imdb AS IMDb_ID, 
     caat.id_collection AS collection_ID, 
     ca.data_name AS actors_name 

FROM collection_actors AS ca, collection_actors_assignedto AS caat 
WHERE (ca.id_imdb = caat.id_collection) AND (caat.id_collection = 'tt1104001')