Проверяйте несколько таблиц, но одновременно отображайте данные только из одной таблицы.Php

Кемеровские программисты php общаются здесь
Anonymous
Проверяйте несколько таблиц, но одновременно отображайте данные только из одной таблицы.

Сообщение Anonymous »

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


Таблица 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 в поле значения.


Используя активные записи в Codeigniter, мне нужно получить следующие наборы результатов:
  • Получить все записи, которые являются общими в таблице 1 и таблице 2 для col4 = 101, col1 = 2, col2 = 2
  • Получить все записи, которые присутствуют только в таблице 1 для col4 = 101, col1 = 2, col2 = 2
  • Получить все записи, которые присутствуют только в таблице 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 не дает результатов. Если мы пропустим столбцы 1 и 2, результаты все равно будут неточными. Пожалуйста, предложите правильные коды.

Подробнее здесь: https://stackoverflow.com/questions/586 ... -at-a-time

Вернуться в «Php»