2011-08-25 107 views
0

我正在努力完成一些工作,但我有点小菜鸟,不知道这是否可以在一个查询中完成。MySQL:这可能吗?

我看起来像这样的两个表:

表1:

link_id target_country 
------------------------- 
1   5 
2   3 

表2:

id_country country 
------------------------- 
5   Belgium 
5   Russia 
2   USA 

所以,从上面的数据,link_id 1有一个target_country 5,这意味着该链接属于比利时俄罗斯(因为id_country 5表2被链接到这些国家)

我的想法是,通过几个link_ids后MySQL查询,我可以得到类似:

  • 比利时=> 1(因为link_id是1为比利时链路)
  • 俄罗斯=> 1(此link_id 1也属于俄罗斯)
  • 美国=> 2

我怎样才能用一个查询,只有把link_ids这样做呢?谢谢!

回答

1
SELECT country, link_id 
FROM table_2 
INNER JOIN table_1 
ON table_2.id_country = table_1.target_country 
WHERE table_1.link_id IN (1, 2); 

这是一个标准JOIN

2
SELECT link_id, country 
FROM table1 links 
    INNER JOIN table2 countries ON links.target_country = countries.id_country 
1
SELECT 
    table2.country 
FROM 
    table1, 
    table2 
WHERE 
    table2.country_id = table1.target_country AND 
    table1.target_country = 5; 

确保你实际上在table2上有一个主索引 - 如果country_id不是唯一的,那么country_id不能是主索引!

1
SELECT t2.country, t1.link_id 
FROM table_1 t1, table_2 t2 
WHERE t1.target_country = t2.id_country