Javascript 适用于所有项目的组合WHERE条款包括

Javascript 适用于所有项目的组合WHERE条款包括,javascript,mysql,node.js,sequelize.js,Javascript,Mysql,Node.js,Sequelize.js,我试图以这种方式写作,但没有达到我的目标查询: 包含更多的嵌套模型,因为所有都是内部联接,我尝试了在包含框中使用required。如何对不同表中的列执行[OR]条件 i want to perform this query in sequelize models: SELECT Cou.country_id,cou.country_name, Sta.state_id, Sta.state_name, Dis.district_id, Dis.district_name,Cit.city_id

我试图以这种方式写作,但没有达到我的目标查询: 包含更多的嵌套模型,因为所有都是内部联接,我尝试了在包含框中使用required。如何对不同表中的列执行[OR]条件

i want to perform this query in sequelize models:

SELECT Cou.country_id,cou.country_name, Sta.state_id, Sta.state_name, Dis.district_id,
Dis.district_name,Cit.city_id, Cit.city_name,Loc.location_id,Loc.location_name,Sub_Loc.sub_location_id,Sub_Loc.sub_location_name,Prop.property_id,Prop.property_name,Prop.hp_builders_id,
Bud.builders_id,Bud.builders_name
FROM hp_country Cou
INNER JOIN hp_state Sta ON Cou.country_id = Sta.hp_country_id
INNER JOIN hp_district Dis ON Sta.state_id = Dis.hp_state_id
INNER JOIN hp_city Cit ON Dis.district_id = Cit.hp_district_id
INNER JOIN hp_location Loc ON Cit.city_id = Loc.hp_city_id
INNER JOIN hp_sub_location Sub_Loc ON Loc.location_id = Sub_Loc.hp_location_id
INNER JOIN hp_property Prop ON Sub_Loc.sub_location_id=Prop.hp_sub_location_id
LEFT JOIN hp_builders Bud ON Prop.hp_builders_id=Bud.builders_id
where (Cou.country_status=1 AND Sta.state_status=1 AND Cou.country_id=1)
AND (Dis.district_name LIKE '%ky%' OR Cit.city_name LIKE '%ky%' OR Loc.location_name LIKE '%ky%' OR Sub_Loc.sub_location_name LIKE '%ky%' OR Prop.property_name LIKE '%ky%')

我试图修复您的查询,但没有测试它。如果您遇到任何问题,请通知我:

hp_country.findAll({
    attributes: ['country_id', 'country_name'],
    where: {
        country_status: 1,
        country_id: 1
    },
    include: [{
        model: hp_state,
        attributes: ['state_id', 'state_name'],
        where: {
            state_status: 1,
          },
        include:[{
            model: hp_districts,
            attributes: ['district_id', 'district_name'],
            where: {
               district_status: 1
            },
            include:[{
                model: hp_city,
                attributes: ['city_id', 'city_name'],
                where: {
                    city_status: 1,
                    city_name :{
                        $like: '%ma%'
                    }
                },
                include:[{
                    model: hp_location,
                    attributes: ['location_id', 'location_name'],
                    where: {
                       location_status: 1,
                        location_name :{
                            $like: '%ma%'
                        }
                    },
                    include:[{
                        model: hp_sub_location,
                        attributes: ['sub_location_id', 'sub_location_name'],
                        where: {
                            sub_location_status: 1,
                            sub_location_name :{
                                $like: '%ma%'
                            }
                        }
                    }]
                }]

            }]
        }]
    }]
})

您是否定义了表之间的关联?是的,表已经存在并设置了一个完美的关系,但我在查询中对这一行感到困惑[和(Dis.district\u名称,如'%ky%'或Cit.city\u名称,如'%ky%'或Loc.location\u名称,如'%ky%'或Prop.property\u名称,如'%ky%'),如何执行或与不同表中的不同列建立关系实际上
seuqelize
不允许引用模型实例,您必须使用
Sequelize.col
Sequelize.literal
。如果您已经完美地定义了所有关联,那么就不必嵌套。请您在Sequelize.col或Sequelize.literalSure中给出一些示例来执行此查询,我尝试修复您的查询Anq,但我收到了以下错误类型错误:Sequelize.literal不是函数。我有一个sequalize对象alsohp_country.findAll({where:Sequelize.literal(),include:[{model:hp_state,}]})这是有效的我想你有一个大写字母
S
的引用,用小写字母
S
看到这个也有效,,当在什么条件下进行续集时,它不起作用。。hp_country.findAll({其中:Sequelize.literal(“hp_states.state_名称,如“%ka%”),包括:[{model:hp_state,}]})。我得到了这个的输出sequelize生成了什么查询?启用其日志记录并在控制台中查看查询。
hp_country.findAll({
        attributes: ['country_id', 'country_name'],
        where: {
            //main AND condition
            $and: [
                //first joint condition
                {
                    $and: [
                        { country_status: 1 },
                        { country_id: 1 },
                        Sequelize.literal("Sta.state_status = 1")   //I put 'state_status' here because it was a joint condition to be true
                    ],
                },
                //second joint condition
                {
                    $or: [
                        Sequelize.literal("Dis.district_name LIKE '%ky%'"),
                        Sequelize.literal("Cit.city_name LIKE '%ky%'"),
                        Sequelize.literal("Loc.location_name LIKE '%ky%' "),
                        Sequelize.literal("Sub_Loc.sub_location_name LIKE '%ky%'"),
                        Sequelize.literal("Prop.property_name LIKE '%ky%'")
                    ]
                }
            ]
        },
        include: [
            {
                model: hp_state,
                attributes: ['state_id', 'state_name']
            },
            {
                model: hp_districts,
                attributes: ['district_id', 'district_name']
            },
            {
                model: hp_city,
                attributes: ['city_id', 'city_name']
            },
            {
                model: hp_location,
                attributes: ['location_id', 'location_name']
            },
            {
                model: hp_sub_location,
                attributes: ['sub_location_id', 'sub_location_name']
            }
        ]
    })