Anonymous
MySQL объединяет несколько строк объединенного набора результатов [дубликат]
Сообщение
Anonymous » 29 дек 2025, 06:53
Вот запрос активной записи моего codeigniter, над которым я работаю
Код: Выделить всё
$this->db->select('wo.*,
en.equipment_name as conventional_name,
cat.name as category_name,
toe.name as type_of_equipment_text,
wos.wo_status,
l.name as location_name, spl.name as supplier_name,
ht.shortcode as type_code, c.name as city_name,
dt.name as district_name, d.name as division_name, z.name as zone_name')
->from('work_orders wo')
->join(DB_PREFIX . 'equipment e', 'e.ID = wo.tag_num', 'left')
->join(DB_PREFIX . 'equipment_names en', 'en.ID = e.conventional_name', 'left')
->join(DB_PREFIX . 'categories cat', 'cat.ID = en.category_id', 'left')
->join(DB_PREFIX . 'equipment_type toe', 'toe.ID = e.type_of_equipment', 'left')
->join(DB_PREFIX . 'suppliers spl', 'spl.ID = e.purchased_from_supplier_name AND spl.status=1', 'left')
->join(DB_PREFIX . 'locations l', 'l.ID = e.city_id', 'left')
->join(DB_PREFIX . 'hospital_type ht', 'ht.ID = l.type_id', 'left')
->join(DB_PREFIX . 'cities c', 'c.ID = l.city_id', 'left')
->join(DB_PREFIX . 'districts dt', 'dt.ID = c.district_id', 'left')
->join(DB_PREFIX . 'divisions d', 'd.ID = dt.division_id', 'left')
->join('work_orders_status wos', 'wos.id = wo.wo_status', 'left')
->join(DB_PREFIX . 'zones z', 'z.ID = d.zone_id', 'left')
->where("find_in_set($get_engineer_id, wo.`assigned_to_enggs`)");
В таблице work_orders у меня есть столбец, назначенный_to_enggs, в котором для каждой записи указаны идентификаторы сотрудников, разделенные запятыми. Я хочу получить имена сотрудников, разделенные запятыми, по этим идентификаторам, объединив их с таблицей сотрудников.
Вот моя таблица work_orders
Код: Выделить всё
╔══════════╦═══════════════════╗
║ ID ║assigned_to_enggs ║
╠══════════╬═══════════════════╣
║ 1 ║ 2,4,5 ║
║ 2 ║ 1,2 ║
║ 3 ║ 2 ║
║ 4 ║ 3,1 ║
║ 5 ║ 2,4,1 ║
╚══════════╩═══════════════════╝
таблица сотрудников
Код: Выделить всё
╔══════════╦═════════════════╗
║ emp_id ║ name ║
╠══════════╬═════════════════╣
║ 1 ║ Irfan ║
║ 2 ║ Kamran Khan ║
║ 3 ║ Faiza ║
║ 4 ║ Atif ║
║ 5 ║ Farrukh ║
╚══════════╩═════════════════╝
Я пробовал GROUP_CONCAT(), но у меня не сработало. Может ли кто-нибудь мне помочь? Заранее спасибо
Подробнее здесь:
https://stackoverflow.com/questions/562 ... result-set
1766980419
Anonymous
Вот запрос активной записи моего codeigniter, над которым я работаю [code]$this->db->select('wo.*, en.equipment_name as conventional_name, cat.name as category_name, toe.name as type_of_equipment_text, wos.wo_status, l.name as location_name, spl.name as supplier_name, ht.shortcode as type_code, c.name as city_name, dt.name as district_name, d.name as division_name, z.name as zone_name') ->from('work_orders wo') ->join(DB_PREFIX . 'equipment e', 'e.ID = wo.tag_num', 'left') ->join(DB_PREFIX . 'equipment_names en', 'en.ID = e.conventional_name', 'left') ->join(DB_PREFIX . 'categories cat', 'cat.ID = en.category_id', 'left') ->join(DB_PREFIX . 'equipment_type toe', 'toe.ID = e.type_of_equipment', 'left') ->join(DB_PREFIX . 'suppliers spl', 'spl.ID = e.purchased_from_supplier_name AND spl.status=1', 'left') ->join(DB_PREFIX . 'locations l', 'l.ID = e.city_id', 'left') ->join(DB_PREFIX . 'hospital_type ht', 'ht.ID = l.type_id', 'left') ->join(DB_PREFIX . 'cities c', 'c.ID = l.city_id', 'left') ->join(DB_PREFIX . 'districts dt', 'dt.ID = c.district_id', 'left') ->join(DB_PREFIX . 'divisions d', 'd.ID = dt.division_id', 'left') ->join('work_orders_status wos', 'wos.id = wo.wo_status', 'left') ->join(DB_PREFIX . 'zones z', 'z.ID = d.zone_id', 'left') ->where("find_in_set($get_engineer_id, wo.`assigned_to_enggs`)"); [/code] В таблице work_orders у меня есть столбец, назначенный_to_enggs, в котором для каждой записи указаны идентификаторы сотрудников, разделенные запятыми. Я хочу получить имена сотрудников, разделенные запятыми, по этим идентификаторам, объединив их с таблицей сотрудников. Вот моя таблица work_orders [code]╔══════════╦═══════════════════╗ ║ ID ║assigned_to_enggs ║ ╠══════════╬═══════════════════╣ ║ 1 ║ 2,4,5 ║ ║ 2 ║ 1,2 ║ ║ 3 ║ 2 ║ ║ 4 ║ 3,1 ║ ║ 5 ║ 2,4,1 ║ ╚══════════╩═══════════════════╝ [/code] таблица сотрудников [code]╔══════════╦═════════════════╗ ║ emp_id ║ name ║ ╠══════════╬═════════════════╣ ║ 1 ║ Irfan ║ ║ 2 ║ Kamran Khan ║ ║ 3 ║ Faiza ║ ║ 4 ║ Atif ║ ║ 5 ║ Farrukh ║ ╚══════════╩═════════════════╝ [/code] Я пробовал GROUP_CONCAT(), но у меня не сработало. Может ли кто-нибудь мне помочь? Заранее спасибо Подробнее здесь: [url]https://stackoverflow.com/questions/56227849/mysql-concat-multiple-rows-of-joined-result-set[/url]