2013-03-25 92 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')