I have two tables:
HotelInfo:
class HotelInfo(db.Model):
__tablename__ = 'hotel_info'
country_area = db.Column(db.String(45), nullable=False, primary_key=True)
hotel_id = db.Column(db.String(32), unique=True, nullable=False, primary_key=True)
hotel_name = db.Column(db.Text)
hotel_url = db.Column(db.Text)
hotel_address = db.Column(db.Text)
review_score = db.Column(db.Float, nullable=True)
review_qty = db.Column(db.Integer, nullable=True)
clean = db.Column(db.Float, nullable=True)
comf = db.Column(db.Float, nullable=True)
loct = db.Column(db.Float, nullable=True)
fclt = db.Column(db.Float, nullable=True)
staff = db.Column(db.Float, nullable=True)
vfm = db.Column(db.Float, nullable=True)
wifi = db.Column(db.Float, nullable=True)
reviews = db.relationship('HotelReview', backref='hotel_info', lazy=True)
And HotelReview:
class HotelReview(db.Model):
__tablename__ = 'hotel_reviews'
uuid = (db.Column(db.String, nullable=True, primary_key=True))
hotel_id = db.Column(db.String, db.ForeignKey('hotel_info.hotel_id'))
review_title = db.Column(db.Text)
review_url = db.Column(db.Text)
review_score = db.Column(db.Float, nullable=True)
review_date = db.Column(db.DateTime)
reviewer_name = db.Column(db.Text)
hash_reviewer_name = db.Column(db.String, nullable=True)
reviewer_location = db.Column(db.String, nullable=True)
posting_conts = db.Column(db.Integer, nullable=True)
positive_content = db.Column(db.Text)
negative_content = db.Column(db.Text)
tag_n1 = db.Column(db.Text)
tag_n2 = db.Column(db.Text)
tag_n3 = db.Column(db.Text)
tag_n4 = db.Column(db.Text)
tag_n5 = db.Column(db.Text)
staydate = db.Column(db.Text)
I'm trying to get hotels with more than 5 reviews, and the reviews from those hotels between 2 dates.
I have this for the moment:
This is for getting the hotels with more than 5 reviews
Hotels = HotelInfo.query.filter(HotelInfo.review_qty >= 5)
I know with that I can get the all the reviews from an specific hotel with hotel[0].reviews
for example, but I want keep only the most recent reviews.
I have this for get only the most recent reviews:
reviews = HotelReview.review_date.between('2018-01-01', '2019-12-31')
But don't have idea to do all together with one query.