Codeigniter: объединить три таблицы - PullRequest
2 голосов
/ 29 апреля 2020

Я пытаюсь сделать Объединение между тремя таблицами, в которых в одной таблице не может быть информации для объединения.

Это мои таблицы:

Встречи

  • id
  • docent_id
  • мотивация

человек

  • id
  • имя
  • фамилия

Спутники

  • id
  • meeting_id
  • имя
  • фамилия

Теперь я хочу восстановить информацию, где Meetings.docent_id = Persons.id (и это нормально), я также хочу восстановить информацию, где Meetings.id = Companions.meeting_id, и если я добавляю это условие, я получаю сообщение об ошибке.

Проблема в том, что последнее условие присутствует не всегда, потому что пользователь может решить, хочет ли он компаньона или нет (так в случае, если он не хочет этого, они не записываются в таблицу Companions), поэтому может случиться так, что некоторые Meetings.id не имеют соответствия в Companions.meeting_id.

Я пробовал код наподобие:

 $query = $this->db->select('Meetings.*, Persons.name, Persons.surname, Companions.*')
            ->from('Meetings')
            ->join('Companions', 'Meetings.id = Companions.meeting_id', 'LEFT')
            ->join('Persons', 'Meetings.docent_id = Persons.id', 'INNER')
            ->where('delete_date is null')
           //....

И он возвращает мне 500 ошибок, я думаю, потому что на некоторых встречах нет компаньонов. Как мне сделать так, чтобы получить все встречи и если есть товарищи, показать их?

Спасибо.

1 Ответ

1 голос
/ 29 апреля 2020
$query = $this->db->select('Meetings.*, Persons.name, Persons.surname, Companions.*')
        ->from('Meetings')
        ->join('Companions', 'Meetings.id = Companions.meeting_id', 'LEFT')
        ->join('Persons', 'Meetings.docent_id = Persons.id', 'INNER')
        ->where('Persons.delete_date is null')

убедитесь, что у вас есть полное имя столбца для где (может быть, у вас одинаковое имя столбца в двух объединенных таблицах)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...