I have 2 tables like this,
Table1
Id Locations
-- ---------
1 India, Australia
2 US , UK
Table2
Table2Id Location
-------- --------
101 Italy
102 UK
103 Hungary
104 India
I need to inner join these 2 tables on the condition, If Locations in table2 contains Location field in table1. The result will be like
Id Table2Id Location Locations
-- -------- -------- ---------
1 104 India India, Australia
2 102 UK US , UK
I tried something like
Select t1.id,
t2.Table2Id,
t1.Locations,
t2.Location
From Table1 t1
Inner join Table2 t2 On CONTAINS(t1.Locations, t2.Location)
But the second parameter of contains should be a string. Its not allowing to give the column name there.
I cannot use temptable or variable in the query. Because this query needs to be run on a email campaign tool called ExactTarget where there is no support for temptable and variables.
Any help will be highly appreciated. Thank you.
SQLFiddle example for MySQL 5.5 SQLFiddle example for SQL
Table and data
create table table1 (id int, locations varchar(100));
insert into table1 values
(1, 'India, Australia'),
(2, 'US, UK');
create table table2 (table2id int, location varchar(100));
insert into table2 values
(101, 'Italy'),
(102, 'UK'),
(103, 'Hungary'),
(104, 'India');
MySQL query
select
table1.id,
table2.table2id,
table2.location,
table1.locations
from table1
join table2 on table1.locations like concat('%', table2.location, '%')
SQL Server query
select
table1.id,
table2.table2id,
table2.location,
table1.locations
from table1
join table2 on table1.locations like '%' + table2.location + '%'
Edit
In case where US location is contained in the country name Australia, the above query may not work as desired. To work around that problem, here's a possible query to use
select
table1.id,
table2.table2id,
table2.location,
table1.locations
from table1
join table2 on
',' + replace(table1.locations,', ', ',') + ',' like '%,' + table2.location + ',%'
This query forces India, Australia to become ,India,Australia,. This is then compared with ,US, and therefore will not suffer from incorrect results.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With