2016-08-16 128 views
0

我想執行這個查詢在sequelize型號:在sequelize中的「where」子句中使用聯結表中的列?

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%') 

我Sequelize代碼無法找到hp_districts.district_status列名。但我得到hp_states.states_status column.so如何才能把這些剩餘的表列在where子句中,以及如何從出主那裏的條件

hp_country.findAll({ 
      attributes: ['country_id', 'country_name'], 
      where: { 
       //main AND condition 
       $and: [ 
        //first joint condition 
        { 
         $and: [ 
          { country_status: 1 }, 
          { country_id: 1 }, 
      Sequelize.col("hp_states.state_status = 1") 
       , 
       Sequelize.col("hp_districts.district_status = 1") 
         ] 

        } 
       ] 
      }, 

      include: [ 
       { 
        model: hp_state, 
        attributes: ['state_id', 'state_name'], 
        required:true, 
        where:{ 
         state_status:1 
        }, 
        include:[{ 
         model: hp_district, 
         attributes: ['district_id', 'district_name'], 
         where:{ 
          district_status:1 
         }, 
         required:true, 
         include:[{ 
          model: hp_city, 
          where:{ 
           city_status:1 
          } 
         }] 
        }] 
       } 
      ] 
     }) 
+0

未來,請不要重複提出同樣的問題;無論是通過新帳戶還是自己的帳戶(http://stackoverflow.com/questions/38976673/using-columns-from-junction-table-in-where-clause-in-sequelize?noredirect=1)。請參閱http://meta.stackexchange.com/questions/7046/getting-attention-for-unanswered-questions。 – Matt

回答

0

裹列名與$符號在那裏執行和/或條款的名稱,它允許做查詢到包括

hp_country.findAll({ 
     attributes: ['country_id', 'country_name'], 
     where: { 
      country_status: 1, 
      country_id: 1, 
      '$States.state_status$': 1 
     }, 
     include: [ 
      { 
       model: hp_state, 
       as: 'States', 
       ... 
+0

它是$嵌套table.column名稱$支持[email protected]。我得到hp_state列。我的問題是訪問where子句中的hp_districts.district_status列 –