Search code examples
phpmysqlsqllaravelrdbms

Mysql Query error in where clause on left join


Sorry for the basic question:

select `plans`.`name`, `A`.`subscription_id`, `A`.`amount`, 
       `A`.`created_date`, `A`.`end_date`, 
       `A`.`subscription_status`, `users`.`email`, `A`.`plan_id`, 
       `A`.`user_id`, `usage`.`created_at` as `usagedate`,
        COUNT(usage.id) as used_count
from `subscriptions` A
left join `users` on `users`.`id` = `A`.`user_id` 
left join `plans` on `A`.`plan_id` = `plans`.`Id` 
left join `usage` on `A`.`user_id` = `usage`.`user_id` 
where `usage`.`created_at` between A.created_at and A.end_date
group by `A`.`plan_id`

I am getting the error

1054 - Unknown column 'A.created_at' in 'where clause'


Solution

  • I think there should be A.created_date instead of A.created_at

    select `plans`.`name`, `A`.`subscription_id`, `A`.`amount`, 
    
    `A`.`created_date`, `A`.`end_date`, 
    
    `A`.`subscription_status`, `users`.`email`, `A`.`plan_id`, 
    
    `A`.`user_id`, `usage`.`created_at` as `usagedate`, COUNT(usage.id) as 
    
    used_count from `subscriptions`     A
    
    left join `users` on `users`.`id` = `A`.`user_id` 
    
    left join `plans` on `A`.`plan_id` = `plans`.`Id` 
    
    left join `usage` on `A`.`user_id` = `usage`.`user_id` 
    
    where 
    
    `usage`.`created_at` between A.created_date and A.end_date
    
    group by 
    
    `A`.`plan_id`