Проверяйте несколько таблиц, но одновременно отображайте данные только из одной таблицы.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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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