i have 3 tables joining together. works great if data present in 3 tables, in case, return 3 of each row due how joining works assume.
so, in order rid of duplicates, group name, leaving 1 of each unique row left, great.
however, if third table empty returns no rows @ all. if remove group part, returns 1 of each row.
so question 2-fold: 1. why happening? 2. how fix it?
in short, question is: "why mysql remove rows if 1 of each found, when using group by".
for instance if these names back: car phone tv
and go group name, returns nothing @ all. if this:
car phone tv car phone tv
the group works expected , leaves me 1 of each.
here sql (with group-by @ end):
select name, amount, amount_left `template_useages_products` join products on template_useages_products.product_id = products.id join leftovers on leftovers.template_useages_id = template_useages_products.template_useages_id template_useages_products.template_useages_id = ? group name
thanks in advance.
select name, amount, amount_left template_useages_products left join products on template_useages_products.product_id = products.id left join leftovers on leftovers.template_useages_id = template_useages_products.template_useages_id template_useages_products.template_useages_id = ? group name
use left join
instead. join
refers inner join
default in mysql, means results excluded if of tables lacks matching record. ref
by using left join
, columns in final result table filled null.
Comments
Post a Comment