SELECT pc. * , ssc. * , IF(ssc.category_id = pc.ID, '1', '0') AS checked
FROM property_categories pc
LEFT JOIN su_selected_categories ssc ON ssc.su_property_settings_id = 9
Я пытаюсь выполнить запрос на выборку, который находит все категории, а затем видит ли в другой таблице одна из категорий, если это пометить его как «проверено»Возвращающиеся повторяющиеся строки MySQL один ко многим
В этом случае мне нужно оставить 3 строки (3 категории), из которых 2 должны находиться в пределах отмеченного столбца как «1», а остальные - «0».
Этот запрос возвращает повторяющиеся строки, и когда я пытаюсь сгруппировать по pc.ID, он пропускает одну из правильных строк.
Куда я иду не так?
----------------------
| id | category_name |
----------------------
| 1 | category1 |
----------------------
| 2 | category2 |
----------------------
| 3 | category3 |
----------------------
---------------------------------------------
| id | su_property_settings_id | category_id |
---------------------------------------------
| 1 | 1 | 2 |
----------------------------------------------
| 2 | 9 | 2 |
----------------------------------------------
| 3 | 9 | 1 |
----------------------------------------------
...more
Обновлено *
Что я получаю с группой по pc.ID
ID | category_name | ID | su_property_settings_id | category_id | checked
--------------------------------------------------------------------------
1 | cat1 | 11 | 9 | 2 | 0
2 | cat2 | 11 | 9 | 2 | 1
3 | cat3 | 11 | 9 | 2 | 0
То, что я хочу
ID | category_name | ID | su_property_settings_id | category_id | checked
--------------------------------------------------------------------------
1 | cat1 | 11 | 9 | 2 | 1
2 | cat2 | 11 | 9 | 2 | 1
3 | cat3 | 11 | 9 | 2 | 0
добавить на 'GROUP BY' в зависимости от того поля (ы) вы хотите не быть«пропустили». В каком поле это не ясно из вашего вопроса, показывая вывод, который вы получаете, и желаемый результат поможет. –