Good morning!
There is a SQL query:
SELECT `rel`.id AS `id`, CASE WHEN meta.meta_name = 'free' THEN 'Свободен' WHEN meta.meta_name = 'reserved' THEN 'Резерв' WHEN meta.meta_name = 'order' AND meta.meta_data>100 THEN 'Куплен' WHEN meta.meta_name = 'order' AND meta.meta_data<100 THEN 'Свободен' WHEN meta.meta_name = 'pre-order' THEN 'Куплен' ELSE 'На проверке' END status FROM `rel` LEFT OUTER JOIN `rel_meta` `meta` ON ((`rel`.id = meta.rel_id AND ( meta.meta_name = 'order' OR meta.meta_name = 'pre-order' OR meta.meta_name = 'free' OR meta.meta_name = 'reserved' )) OR meta.id = NULL) LIMIT 20 The purpose of the query: Obtaining records from the table rel, column id + status column. Problem: when executed, meta can store 2 order and pre-order records that are tied to one rel_id, due to which the lines are doubled as a result.
How to solve a problem? Something tells, dig in the direction of DISTINCT, but could not understand exactly where it is appropriate.
Thanks in advance.