The response marked as duplicate does not answer the main question, just answer a question I myself answered during the description of the problem.
I have two tables:
TableInit
+----------+------------------------+---------------------------+
| id_video | titulo                 | desc                      |
+----------+------------------------+---------------------------+
| 23234546 | Inside the White House | As President Donald Trump |
+----------+------------------------+---------------------------+
AND 
TableName
+---------+----------+---------------+--------------+
| meta_id | video_id | upload_key    | upload_value |
+---------+----------+---------------+--------------+
| 64136   | 23234546 | host          | cnn          |
+---------+----------+---------------+--------------+
| 64137   | 23234546 | send          | 0            |
+---------+----------+---------------+--------------+
| 64138   | 23234546 | upload_id     | sHGN-tSNvJYs |
+---------+----------+---------------+--------------+
I would like to return something like this after the query
array(1){[0]=>
  array(15) {
    ["id_video"]=>
    string(7) "23234546"
    ["titulo"]=>
    string(56) "Inside the White House"
    ["desc"]=>
    string(96) "As President Donald Trump."
    array(6){
    ["meta_id"]=>
    string(5) "64136"
    ["video_id"]=>
    string(7) "23234546"
    ["host"]=> 
    string(3) "cnn"
    ["send"]=>
    string(1) "0"
    ["upload_id"] => 'sHGN-tSNvJYs'
    }
  }
 }
or like this
array(1){[0]=>
  array(15) {
    ["id_video"]=>
    string(7) "23234546"
    ["titulo"]=>
    string(56) "Inside the White House"
    ["desc"]=>
    string(96) "As President Donald Trump."
    ["meta_id"]=>
    string(5) "64136"
    ["video_id"]=>
    string(7) "23234546"
    ["host"]=> 
    string(3) "cnn"
    ["send"]=>
    string(1) "0"
    ["upload_id"] => 'sHGN-tSNvJYs'
  }
 }
so I made this query (is this solution correct? or does it have a better option)
SELECT v.*,  if( up.upload_key = 'send', up.upload_value, 0 ) AS send,  
    if( up.upload_key = 'host', up.upload_value, 0 ) AS host, 
     if( up.upload_key = 'upload_id', up.upload_value, 0 ) AS upload_id 
FROM TableInit v JOIN TableName up ON up.video_id =  v.id_video;
The big problem is that this results to me:
| id_video |                 titulo |                      desc | send | host |    upload_id |
|----------|------------------------|---------------------------|------|------|--------------|
| 23234546 | Inside the White House | As President Donald Trump |    0 |  cnn |            0 |
| 23234546 | Inside the White House | As President Donald Trump |    0 |    0 | sHGN-tSNvJYs |
| 23234546 | Inside the White House | As President Donald Trump |    0 |    0 |            0 |
he repeats the values
if I use GROUP BY returns only the values of the first row
| id_video |                 titulo |                      desc | send | host | upload_id |
|----------|------------------------|---------------------------|------|------|-----------|
| 23234546 | Inside the White House | As President Donald Trump |    0 |  cnn |         0 |
when the result that I hope is the join the lines
| id_video |                 titulo |                      desc | send | host |    upload_id |
|----------|------------------------|---------------------------|------|------|--------------|
| 23234546 | Inside the White House | As President Donald Trump |    0 |  cnn | sHGN-tSNvJYs |
How can I get the expected result?
SQL Fiddle SQL Fiddle
 
    