MySQL: как объединить четыре таблицы (синтаксис Active Record)Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 MySQL: как объединить четыре таблицы (синтаксис Active Record)

Сообщение Anonymous »

Для конкретного материала в моей таблице материалов с идентификатором 20 у меня есть две таблицы:

Код: Выделить всё

chemical_name_id | chemical_name  (table name: ml_chemical_names)
================================
1                | Polysomething

common_name_id | common_name (table name: ml_common_names)
=============================
1              | PMMA
2              | Lucite
3              | Perspex
4              | Plexiglas

material_id | material  (table name: ml_materials)
======================
20          | Acrylic
Я немного не знаком с объединением этих таблиц, но я создал две таблицы поиска, например:

Код: Выделить всё

material_id | common_name_id (table name: ml_materials_common_names)
============================
20           | 1
20           | 2
20           | 3
20           | 4

and

material_id | chemical_name (table name: ml_materials_chemical_names)
===========================
20          | 1
Вот мой SQL в формате Active Record (CodeIgniter):

Код: Выделить всё

$this->db->like('cn.common_name', $options['keyword']);
$this->db->or_like('chem.chemical_name', $options['keyword']);
$this->db->join('ml_materials_chemical_names mchem', 'mchem.material_id = m.material_id', 'inner');
$this->db->join('ml_chemical_names chem', 'chem.chemical_name_id = mchem.chemical_name_id', 'inner');
$this->db->join('ml_materials_common_names mcn', 'mcn.material_id = m.material_id', 'inner');
$this->db->join('ml_common_names cn', 'cn.common_name_id = mcn.common_name_id', 'inner');
return $this->db->get('ml_materials m')->result();
Это используется в форме поиска AJAX. Дело в том, что когда я ищу «поличто-то», я получаю четыре результата. Я хочу только один. Я не уверен, что это мои таблицы имеют неправильную структуру или мои соединения. Я пробовал левое, правое и внешнее соединения, и, похоже, ничего не изменилось с точки зрения возвращаемых результатов.

Может кто-нибудь помочь?

Подробнее здесь: https://stackoverflow.com/questions/105 ... ord-syntax
Ответить

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

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

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

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

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