Mysql:复杂查询的解决方案。多重限制

Mysql:复杂查询的解决方案。多重限制,mysql,Mysql,及 有没有可能不用工会,用其他方式来做呢 谢谢, 通过提供查询中使用的表的信息,您更有可能获得一些帮助。不相关的,我不确定当你在WHERE子句和每个左连接的ON条件中使用广告时,右连接有什么好处……右连接告诉mysql只选择带有图像的行。基本上查询听起来是这样的:从广告中选择字段,加入广告类别,仅当有图像与所选广告行相关时,按主图像标志对图像进行排序,使主图像排在第一位,join locations并从每个至少有城镇或地区的区域中选择5个广告。right join表示需要右表中的一行,但不需要左

有没有可能不用工会,用其他方式来做呢


谢谢,

通过提供查询中使用的表的信息,您更有可能获得一些帮助。不相关的,我不确定当你在WHERE子句和每个左连接的ON条件中使用广告时,右连接有什么好处……右连接告诉mysql只选择带有图像的行。基本上查询听起来是这样的:从广告中选择字段,加入广告类别,仅当有图像与所选广告行相关时,按主图像标志对图像进行排序,使主图像排在第一位,join locations并从每个至少有城镇或地区的区域中选择5个广告。right join表示需要右表中的一行,但不需要左表中的一行。但是,您的WHERE导致左侧的表是必需的,所以在这里使用右连接和内部连接应该没有区别。没错。Images表是通过广告id链接的,我是说mysql只选择与图像链接的行。
var statements=[];
for(i=1;i<6;i++)
{
    statements.push(
        '(SELECT a.category, a.id,a.country,a.region,a.rajons,a.town AS town_id,img.t_0, img.main, mt.town, mp.pagasts, mp.pagasts_id, c.link_ AS link'
        +' FROM ads a'
                +' INNER JOIN categories c ON a.category = c.cat_id'
                +' RIGHT JOIN (SELECT t_0,main,ad_id FROM images ORDER BY main DESC) AS img ON a.id = img.ad_id'
                +' LEFT JOIN map_regions mr ON a.region = mr.region_id'
                +' LEFT JOIN map_towns mt ON a.town = mt.town_id'
                +' LEFT JOIN map_pagasts mp ON a.pagasts = mp.pagasts_id'
            +' WHERE a.region='+i
                +' AND a.department !=9'
                +' AND (a.town > 0 OR a.pagasts > 0)'
                +' AND a.charged=1'
            +' GROUP BY a.id'
            +' ORDER BY a.id DESC LIMIT 5)'
    );
}

statements.join(' UNION ALL ')
WHERE a.region='+i
LIMIT 5