我有3个包含以下列的表
ITEMS
-id
-name
-category_id
-brand_id
ITEM_BRAND
-id
-name
ITEM_CATEGORY
-id
-name
我加入了
$this->db->order_by('items.name', 'ASC');
$this->db->join('item_brand', 'item_brand.id = items.brand_id');
$this->db->join('item_category', 'item_category.id = items.category_id');
$query = $this->db->get("items");
问题:
由于选择了所有列,是否可以从定义表中选择一列(例如item_brand.name)?
我做了以下代码,但结果为零。 但如果我删除以下这一行,
$this->db->join('item_category', 'item_category.id = items.category_id');
并将$data['name']
加载到视图中,我得到的只是brand.name
我需要加入3个表格。但我没有这样做。
编辑: 我设法为列提供了一个解决方案,但是,加入3个表我的结果为零。
$this->db->select('items.name,
items.category_id,
items.srp,
items.dp,
items.brand_id,
items.id,
items.serial,
item_brand.name AS item_brand,
item_category.name AS item_category');
$this->db->order_by('items.name', 'ASC');
$this->db->join('item_category', 'item_category.id = items.category_id');
$this->db->join('item_brand', 'item_brand.id = items.brand_id');
$query = $this->db->get("items");
答案 0 :(得分:1)
是否可以从定表中选择一列(例如 item_brand.name)?
是的,您可以使用select
从明确表中选择列,如下所示:
$this->db->select('item_brand.name');
$this->from('items');
$this->db->join('item_brand', 'item_brand.id = ems.brand_id');
$this->db->join('item_category', 'item_category.id = items.category_id');
$query = $this->db->get("items");
如果你在加入item_category
表时没有得到结果,即
$this->db->join('item_category', 'item_category.id = items.category_id');
然后必须存在外键问题,即join
使用mysql的inner join
,它接受连接表之间的所有交叉(公共)数据,并且必须没有匹配的id
( item_category
和items
表中的外键)。因此,您可以使用rightjoin
来获取数据。如果item_category
表中存在任何匹配的外键(items_category.id),则会从items表和来自items
表的所有数据中获取所有数据。
所以,你能做的是:
$this->db->select('item_brand.name');
$this->from('items');
$this->db->join('item_brand', 'item_brand.id = ems.brand_id');
$this->db->join('item_category', 'item_category.id = items.category_id','right');
$query = $this->db->get("items");
如果您想了解更多内容,可以访问this doc。
希望它有所帮助。快乐的编码:)。