我有许多我想在CodeIgniter中访问的表,其中一个基本上是来自其他表的外键集合,其中大多数只有两个字段:唯一的id和名称。 “campaign”表,我们称之为,以这些表'id的形式从其他表中提取数据(因为名称可能不是唯一的)。
现在我要做的是以人类可读的形式显示“广告系列”数据,这意味着显示外国名称,而不是ID。我认为这被称为“加入”,但我并不是100%肯定。我检查了MySql的页面,他们说这实际上不是外键的用途,但我认为你需要外键来加入,所以我现在真的更加困惑了。
我真的使用连接和外键吗?提前谢谢。
答案 0 :(得分:2)
外键提供指向同一表或另一表(通常是后者)中另一条记录的链接。连接使用两个表(有时是同一个表)中的公共数据来提供它们之间的链接。
如果您要连接两个表,并且这两个表之间的唯一公共因子位于第三个表(具有所有外键的表)中,则需要执行2个连接。
实施例
SELECT *.table1, *.table2 FROM table1
LEFT JOIN foreign_key_table ON foreign_key_table.id1 = table1.id
LEFT JOIN table2 ON foreign_key_table.id2 = table2.id
WHERE.....
在Codeignter中:
$this->db->select('*.table1, *.table2');
$this->db->from('table1');
$this->db->join('foreign_key_table', 'foreign_key_table.id1 = table1.id');
$this->db->join('table2', 'foreign_key_table.id2 = table2.id');
$this->db->where('...');
您可以在此处找到所需的所有信息 - http://codeigniter.com/user_guide/database/active_record.html
希望这有帮助。