SELECT 
  p.*, 
  d.*, 
  images.promotion_image_id 
FROM 
  jmj_promotions as p 
  LEFT JOIN jmj_promotion_descriptions as d ON p.promotion_id = d.promotion_id 
  AND d.lang_code = 'en' 
  LEFT JOIN jmj_promotion_images AS images ON images.promotion_id = p.promotion_id 
  AND images.lang_code = 'en' 
WHERE 
  p.promotion_id = 47

Query time 0.00654

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "1.00"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "images",
          "access_type": "system",
          "possible_keys": [
            "promo"
          ],
          "rows_examined_per_scan": 0,
          "rows_produced_per_join": 1,
          "filtered": "0.00",
          "const_row_not_found": true,
          "cost_info": {
            "read_cost": "0.00",
            "eval_cost": "0.20",
            "prefix_cost": "0.00",
            "data_read_per_join": "16"
          },
          "used_columns": [
            "promotion_image_id",
            "promotion_id",
            "lang_code"
          ]
        }
      },
      {
        "table": {
          "table_name": "p",
          "access_type": "const",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "promotion_id"
          ],
          "key_length": "3",
          "ref": [
            "const"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.00",
            "eval_cost": "0.20",
            "prefix_cost": "0.00",
            "data_read_per_join": "80"
          },
          "used_columns": [
            "promotion_id",
            "company_id",
            "conditions",
            "bonuses",
            "to_date",
            "from_date",
            "priority",
            "stop",
            "stop_other_rules",
            "zone",
            "conditions_hash",
            "status",
            "number_of_usages",
            "users_conditions_hash"
          ]
        }
      },
      {
        "table": {
          "table_name": "d",
          "access_type": "const",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "promotion_id",
            "lang_code"
          ],
          "key_length": "9",
          "ref": [
            "const",
            "const"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.00",
            "eval_cost": "0.20",
            "prefix_cost": "0.00",
            "data_read_per_join": "800"
          },
          "used_columns": [
            "promotion_id",
            "name",
            "short_description",
            "detailed_description",
            "lang_code"
          ]
        }
      }
    ]
  }
}

Result

promotion_id company_id conditions bonuses to_date from_date priority stop stop_other_rules zone conditions_hash status number_of_usages users_conditions_hash name short_description detailed_description lang_code promotion_image_id
47 0 a:3:{s:3:"set";s:3:"all";s:9:"set_value";s:1:"1";s:10:"conditions";a:2:{i:0;a:3:{s:8:"operator";s:2:"in";s:9:"condition";s:5:"users";s:5:"value";s:3:"321";}i:1;a:3:{s:9:"condition";s:17:"once_per_customer";s:8:"operator";s:2:"eq";s:5:"value";s:1:"Y";}}} a:1:{i:0;a:4:{s:5:"bonus";s:20:"discount_on_products";s:5:"value";s:4:"1424";s:14:"discount_bonus";s:8:"to_fixed";s:14:"discount_value";d:1;}} 0 0 0 N N cart users=321;once_per_customer=Y A 1 ,321, Quote Discount-321 en