I have an issue with my SQL query, I try to join two tables, but as result have duplicated lines.
There is my database schema:
# messages
belongs_to :user
belongs_to :request
# requests
has_many :messages
belongs_to :expense
I have an polimorphic association between my expenses and requests tables.
And this my query:
Expense.
joins('LEFT JOIN requests ON expenses.id = requests.integration_id').
joins('LEFT JOIN messages ON requests.id = messages.request_id').
where('expenses.id IN (?)', @expenses_id).
select('DISTINCT messages.user_id AS user_id').
group('messages.user_id, expenses.id')
I get all expenses duplicated when I try to joins messages table.
What happen?
EDIT:
With this query is same result:
Expense.
joins('LEFT JOIN requests ON expenses.id = requests.integration_id').
joins('LEFT JOIN messages ON requests.id = messages.request_id').
where('expenses.id IN (?)', @expenses_id).
select('DISTINCT messages.user_id AS user_id').
group('messages.user_id')
EDIT 2:
When I try this:
Expense.
joins('LEFT JOIN requests ON expenses.id = requests.integration_id').
count(:id)
#=> 45
But when I join messages
Expense.
joins('LEFT JOIN requests ON expenses.id = requests.integration_id').
joins('LEFT JOIN messages ON requests.id = messages.request_id').
count(:id)
#=> 93