Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

multi level cascade inner join select query

I've following table structure enter image description here

I'd like to select post_id from any available data of short_name(country name), name (state table) or region_name. Executing following query true result for region_name but not for short_name(country name), name (state table).

select *
from t_post_city
inner join t_region on t_region.region_id = t_post_city.city_id
inner join t_country on t_region.country_id = t_country.country_id
inner join t_states on t_region.province_id = t_states.state_id
where t_country.short_name like %india%
   or t_states.name like %rajasthan%
   or t_region.region_name like %sitapura%

Tell me please, where I'm mistaking!

like image 730
shivshankar Avatar asked Sep 08 '26 06:09

shivshankar


2 Answers

select *
from t_post_city
LEFT OUTER join t_region on t_region.region_id = t_post_city.city_id
LEFT OUTER join t_country on t_region.country_id = t_country.country_id
LEFT OUTER join t_states on t_region.province_id = t_states.state_id
 where t_country.short_name like '%india%'
 or t_states.name like '%rajasthan%'
 or t_region.region_name like '%sitapura%'
like image 86
Joe Love Avatar answered Sep 11 '26 09:09

Joe Love


Use a distinct table expression for each of your three criteria. Write your OR logic using UNION in SQL:

select post_id
from t_post_city
inner join t_region on t_region.region_id = t_post_city.city_id
where t_country.short_name like %india%
t_region.region_name like %sitapura%
union
select post_id
from t_post_city
inner join t_region on t_region.region_id = t_post_city.city_id
inner join t_country on t_region.country_id = t_country.country_id
where t_country.short_name like %india%
union
select post_id
from t_post_city
inner join t_region on t_region.region_id = t_post_city.city_id
inner join t_states on t_region.province_id = t_states.state_id
where t_states.name like %rajasthan%;
like image 22
onedaywhen Avatar answered Sep 11 '26 10:09

onedaywhen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!