开发者

MySQL: Get results given a condition

开发者 https://www.devze.com 2023-04-01 07:44 出处:网络
I have a table that looks like this: target_id || country_code 5-----------||-------US---- 5-----------||-------CA---开发者_如何学编程

I have a table that looks like this:

target_id || country_code

5-----------||-------US----

5-----------||-------CA---

开发者_如何学编程

2----------||-------FR----

3----------||-------SP----

3----------||-------FR----

And another table that looks like this:

target_id || region_name

5-----------||---North America

2-----------||-----France------

3-----------||-----Some Europe

As you can see, table 2 contains locations and target_ids, while table 1 contains where these locations are targeted. In the case of North America, it is targeted to 5, which belongs to Canada and US. France, on the other hand has a target_id of 2, and Some Europe a target_id of 3, which contains France again and Spain.

What I would like to do via MySQL, is to get a table of target_id, country_code, country_name but only for countries. This means, only to the target_ids of table 1 that are in only one row (for example, we know that FR is a country because number 2 is only in FR, and we know that 3 represents a region because it has both Spain and France associated). Is this possible to do via MySQL or will I need two queries and PHP in the middle?

Thanks!


SELECT t1.target_id, t1.country_code, t2.region_name 
  FROM table1 t1
  JOIN table t2
    ON t1.target_id = t2.target_id
  WHERE (SELECT COUNT(*) FROM table1 t3 WHERE t3.target_id = t1.target_id) = 1

table1 is the one with the country codes, table2 is the one with the the region names.

0

精彩评论

暂无评论...
验证码 换一张
取 消