Проверьте несколько таблиц, но показывать данные только из одной таблицы за раз - PullRequest
0 голосов
/ 30 октября 2019

У меня следующая структура таблицы:

Таблица 1:

col1 | col2 | col3
1    | 1    | A
1    | 1    | B
2    | 2    | A
1    | 2    | C
2    | 2    | D

Таблица 2:

col4 | col5 | col6
101  | A    | val1
101  | B    | val2
101  | D    | val3

Все записи таблицы 2 принадлежат тем записям в таблице 1, чья col2 содержит 2 в своем поле значения.

Использование ActiveЗаписи в Codeigniter, мне нужно получить следующие наборы результатов:

  1. Получить все записи, которые являются общими в таблице 1 и таблице 2 для col4 = 101, col1 = 2, col2 = 2
  2. Получить все записи, которые присутствуют только в таблице 1 для col4 = 101, col1 = 2, col2 = 2
  3. Получить все записи, которые присутствуют только в таблице 2 для col4 = 101, col1 = 2, col2= 2

Мой код для случая 1 ниже:

$this->db->select('Table1.*, Table2.*');
$this->db->from('Table2');
$this->db->join('Table1', 'Table1.col3=Table2.col5');
$this->db->order_by('Table1.col3');
$this->db->where('Table1.col1', '2');
$this->db->where('Table1.col2', '2');
$this->db->where('Table2.col4', '101');
$res=$this->db->get();

Мой код для случая 2 ниже:

$this->db->select('Table1.*, Table2.*');
$this->db->from('Table2');
$this->db->join('Table1', 'Table1.col3=Table2.col5','right');
$this->db->order_by('Table1.col3');
$this->db->where('Table1.col1', '2');
$this->db->where('Table1.col2', '2');
$this->db->where('Table2.col4', '101');
$this->db->where('Table2.col5 IS NULL');
$res=$this->db->get();

Мой код для случая 3ниже:

$this->db->select('Table1.*, Table2.*');
$this->db->from('Table2');
$this->db->join('Table1', 'Table1.col3=Table2.col5','left');
$this->db->order_by('Table1.col3');
$this->db->where('Table1.col1', '2');
$this->db->where('Table1.col2', '2');
$this->db->where('Table2.col4', '101');
$this->db->where('Table2.col5 IS NULL');
$res=$this->db->get();

Но все работает не так, как ожидалось. Если мы рассмотрим col1 и col2, случаи 2 и 3 не показывают результатов. Если мы пропустим col1 и col 2, результаты все равно не будут точными. Пожалуйста, предложите правильные коды.

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