Ответ, помеченный как дубликат, не отвечает на главный вопрос, а просто отвечает на вопрос, на который я сам ответил при описании проблемы.
У меня есть две таблицы:
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 |
+---------+----------+---------------+--------------+
Я хотел бы вернуть что-то подобное после запроса
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'
}
}
}
или вот так
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'
}
}
поэтому я сделал этот запрос (это решение правильное? или у него есть лучший вариант)
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;
Большая проблема в том, что это приводит ко мне:
| 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 |
он повторяет значения
если я использую GROUP BY, возвращаются только значения первой строки
| id_video | titulo | desc | send | host | upload_id |
|----------|------------------------|---------------------------|------|------|-----------|
| 23234546 | Inside the White House | As President Donald Trump | 0 | cnn | 0 |
Когда результат, на который я надеюсь, - это соединение строк
| id_video | titulo | desc | send | host | upload_id |
|----------|------------------------|---------------------------|------|------|--------------|
| 23234546 | Inside the White House | As President Donald Trump | 0 | cnn | sHGN-tSNvJYs |
Как я могу получить ожидаемый результат?
Скрипт SQLСкрипт SQL
Я не использую Laravel и в примере ожидаемая отдача от MYSQL
И обратите внимание, что 46 работает так же хорошо, как идентификатор образца 23234546.
Посмотрите, что у вас есть после этой части: «когда результатом, на который я надеюсь, будет соединение линий»






Вы показываете нам ожидаемый вывод Laravel, хотя на самом деле здесь может быть полезнее увидеть ожидаемый табличный вывод MySQL. Вы можете включить это? На мой взгляд, это то, что вы должны обрабатывать на уровне представления PHP.