join - how to subtract two column in mysql where clause? -
i have query want subtract 2 column. here query
select field_data_field_max_pax_allowed.`field_max_pax_allowed_value` m, field_data_field_bookable_item.`entity_id`, node.nid hotel_id, field_data_field_rooms.`field_rooms_target_id` room, field_data_field_quantity.`field_quantity_value` number_of_rooms, node.title, max(ifnull(quan.`field_quantity_value`,0)) maxs, dr.`field_datetime_range_value`, dr.`field_datetime_range_value2` node node left join field_data_field_rooms on node.nid = field_data_field_rooms.entity_id inner join node n on field_data_field_rooms.field_rooms_target_id = n.nid left join field_data_field_max_pax_allowed on field_data_field_rooms.`field_rooms_target_id` = field_data_field_max_pax_allowed.`entity_id` left join field_data_field_quantity on field_data_field_quantity.`entity_id` = field_data_field_rooms.`field_rooms_target_id` left join field_data_field_bookable_item on field_data_field_bookable_item.`field_bookable_item_target_id` = field_data_field_rooms.`field_rooms_target_id` left join field_data_field_quantity quan on field_data_field_bookable_item.`entity_id` = quan.`entity_id` left join field_data_field_datetime_range dr on field_data_field_bookable_item.`entity_id` = dr.`entity_id` (node.type in ('hotel')) , (date_format('2014-12-01', '%y-%m-%d') between date_format(dr.field_datetime_range_value, '%y-%m-%d') , date_format(dr.field_datetime_range_value2,'%y-%m-%d') or date_format('2014-12-31', '%y-%m-%d') between date_format(dr.field_datetime_range_value,'%y-%m-%d') , date_format(dr.field_datetime_range_value2,'%y-%m-%d') or date_format(dr.field_datetime_range_value, '%y-%m-%d') between date_format('2014-12-01', '%y-%m-%d') , date_format('2014-12-31', '%y-%m-%d') or date_format(dr.field_datetime_range_value2, '%y-%m-%d') between date_format('2014-12-31', '%y-%m-%d') , date_format('2014-12-01', '%y-%m-%d') ) , (field_data_field_quantity.`field_quantity_value` - max(ifnull(quan.`field_quantity_value`,0)) > 2) group field_data_field_rooms.`field_rooms_target_id`
this showing error code: 1111 invalid use of group function how can solve it?
the where
clause used select rows process. can't aggregate functions max()
there, because can't calculated until after rows selected -- have chicken-and-egg problem.
you should put in having
clause, used filter resulting rows. should be:
... (node.type in ('hotel')) , (date_format('2014-12-01', '%y-%m-%d') between date_format(dr.field_datetime_range_value, '%y-%m-%d') , date_format(dr.field_datetime_range_value2,'%y-%m-%d') or date_format('2014-12-31', '%y-%m-%d') between date_format(dr.field_datetime_range_value,'%y-%m-%d') , date_format(dr.field_datetime_range_value2,'%y-%m-%d') or date_format(dr.field_datetime_range_value, '%y-%m-%d') between date_format('2014-12-01', '%y-%m-%d') , date_format('2014-12-31', '%y-%m-%d') or date_format(dr.field_datetime_range_value2, '%y-%m-%d') between date_format('2014-12-31', '%y-%m-%d') , date_format('2014-12-01', '%y-%m-%d') ) group field_data_field_rooms.`field_rooms_target_id` having (field_data_field_quantity.`field_quantity_value` - max(ifnull(quan.`field_quantity_value`,0)) > 2)
Comments
Post a Comment