Я пытаюсь достичь следующего: У меня есть две таблицы. Одна из таблиц называется characters
, а другая - experience
. Прямо сейчас я хочу распечатать список всех characters
и связать последнюю строку в experience
. К этим строкам добавляются строки characters
без строки в experience
.Выберите последнюю строку в LEFT JOIN PHP MySQL CodeIgniter
Здесь приведен пример таблиц и желаемого вывода.
characters
id | name |
----------------|
1 | TestChar |
2 | NewChar |
3 | OldChar |
experience
id | char_id | experience |
------------------------------|
1 | 1 | 683185858 |
2 | 2 | 85712849 |
3 | 1 | 687293919 |
4 | 1 | 794812393 |
output
name | experience |
---------------------------|
TestChar | 794812393 |
NewChar | 85712849 |
OldChar | NULL |
До сих пор я сделал этот запрос, и это, кажется, работает в MySQL
SELECT c.name, e1.experience
FROM characters c
LEFT JOIN experience e1 ON e1.char_id = c.id
LEFT JOIN experience e2 ON e1.char_id = e2.char_id AND e2.id > e1.id
WHERE e2.id IS NULL;
Тогда, я хочу, чтобы реализовать это в CodeIgniter, но вот где она идет не так. Следующее, что у меня есть сейчас, оно заполняет c.name, но e1.exp остается пустым.
$this->db->select('c.name, e1.exp');
$this->db->from('characters as c');
$this->db->join('experience as e1', 'e1.char_id = c.id', 'left');
$this->db->join('experience as e2', 'e1.char_id = e2.char_id AND e2.id > e1.id', 'left');
$this->db->where('e2.id', NULL);
Связано ли это с моим MySQL-запросом? Является ли моя реализация в CodeIgniter некорректной? И то и другое? Я ценю каждый совет!
Попробуйте проверить, что SQL CI запроса генерируется (с помощью '$ this-> db-> last_query() ', я думаю). Тогда давайте посмотрим, есть ли разница. –
Созданный запрос правильный, ** ITS A TYPO ** '$ this-> db-> select ('c.name, e1.exp');' должен быть '$ this-> db-> select ('c. имя, e1.experience '); 'потому что ** Нет такого столбца, называемого exp, его опыт ** –