SELECT 
  cscart_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      cscart_products_categories.link_type = "M", 
      CONCAT(
        cscart_products_categories.category_id, 
        "M"
      ), 
      cscart_products_categories.category_id
    )
  ) AS category_ids, 
  product_position_source.position AS position 
FROM 
  cscart_products_categories 
  INNER JOIN cscart_categories ON cscart_categories.category_id = cscart_products_categories.category_id 
  AND cscart_categories.storefront_id IN (0, 1) 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
  LEFT JOIN cscart_products_categories AS product_position_source ON cscart_products_categories.product_id = product_position_source.product_id 
  AND product_position_source.category_id = 7336 
WHERE 
  cscart_products_categories.product_id IN (
    96704, 96705, 97874, 97883, 97884, 97885, 
    97887, 97889, 98421, 98424, 98425, 
    98426, 98428, 98432, 98434, 98436, 
    98437, 98438, 98442, 98446, 98449, 
    98450, 98452, 98455, 98485, 98486, 
    98487, 98488, 98489, 98491
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.01506

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "79.49"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "link_type",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 88,
            "rows_produced_per_join": 88,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "9.09",
              "eval_cost": "8.80",
              "prefix_cost": "17.89",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (96704,96705,97874,97883,97884,97885,97887,97889,98421,98424,98425,98426,98428,98432,98434,98436,98437,98438,98442,98446,98449,98450,98452,98455,98485,98486,98487,98488,98489,98491))"
          }
        },
        {
          "table": {
            "table_name": "product_position_source",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id",
              "product_id"
            ],
            "key_length": "6",
            "ref": [
              "const",
              "nuie_scalesta_net.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 88,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "22.00",
              "eval_cost": "8.80",
              "prefix_cost": "48.69",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        },
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "nuie_scalesta_net.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 4,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "22.00",
              "eval_cost": "0.44",
              "prefix_cost": "79.49",
              "data_read_per_join": "11K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`nuie_scalesta_net`.`cscart_categories`.`storefront_id` in (0,1)) and ((`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids`))) and (`nuie_scalesta_net`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
96704 7339,7329M
96705 7339,7329M
97874 7219M,7338,7313
97883 7219M,7338,7313
97884 7219M,7313,7338
97885 7219M,7313,7338
97887 7313,7219M,7338
97889 7313,7219M,7338
98421 7313,7219M,7338
98424 7338,7219M,7313
98425 7338,7219M,7313
98426 7219M,7338,7313
98428 7313,7338,7219M
98432 7338,7219M,7313
98434 7313,7219M,7338
98436 7313,7219M,7338
98437 7338,7313,7219M
98438 7313,7338,7219M
98442 7313,7338,7219M
98446 7313,7338,7219M
98449 7313,7338,7219M
98450 7313,7338,7219M
98452 7219M,7313,7338
98455 7219M,7338,7313
98485 7313,7338,7219M
98486 7313,7219M,7338
98487 7313,7219M,7338
98488 7313,7219M,7338
98489 7313,7338,7219M
98491 7313,7338,7219M