В левом соединении двух таблиц выберите все записи из левой таблицы и выберите только одну запись строки из правой таблицы, которая соответствует левой таблице - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть две таблицы Вопросы и ответы

Я хочу выбрать все вопросы по математике, но только один ответ на вопросы.

$this->db->select('*');
    $this->db->from('questions');
    $this->db->join('answers','questions.id = answers.que_id', 'left'); //how to limit answers to 1
    $this->db->where('questions.subject', 'maths');
    return $this->db->get();

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Попробуйте выполнить такой подзапрос:

$this->db->select('*');
$this->db->from('answers');
$this->db->join('(select * from questions limit 1)','(questions.id = answers.que_id)', 'inner');
$this->db->where('questions.subject', 'maths');
return $this->db->get();
0 голосов
/ 29 декабря 2018

Ваш запрос должен быть таким:

$query = 'select q.*, a1.* 
from questions AS q
    left join answers AS a1
        on a1.id = (select a2.id 
            from answers AS a2 
            where q.id = a2.que_id
            ORDER BY a2.id 
            limit 1
            );';
$query = $this->db->query($query);
$result = $query->result():
0 голосов
/ 29 декабря 2018

Используйте подзапрос,

выберите вопрос (выберите ответ из ответов где questions.id = answers.que_id) в качестве ответа на вопросы, где questions.subject = 'maths';

Обратите внимание: это не запущенный SQL - просто поймите идею

...