是否有可能连续两次加入一张桌子?

时间:2017-08-02 12:04:50

标签: php mysql sql codeigniter join

我的问题是: 我想显示一个包含列" Customer"的表。 这是一个表格,其中包含"测量"在里面。问题是,有两种"措施"。它们也在数据库表中与一个名为" type"的列分开。 (0和1)。

每一个"措施"属于"客户",但对于每个"措施"输入有一种不同的方式来获得"客户"名称:

这是代码:

$select = "blablabla..., c.name as customer";
$this->db->select($select);
$this->db->from("it_measure m");

继续"措施"类型0:

$this->db->join("it_ma ma", "m.id = ma.measure", "LEFT OUTER");
$this->db->join("it_a a", "ma.a = a.id", "LEFT OUTER");
$this->db->join("it_i i", "a.i = i.id", "LEFT OUTER");
$this->db->join("it_customer c", "i.customer = c.id", "LEFT OUTER");

对于"措施"与类型1:

$this->db->join("it_mf mf", "m.id = mf.mid", "LEFT OUTER");
$this->db->join("it_f f", "mf.fid= f.id", "LEFT OUTER");
$this->db->join("it_w w", "f.w = w.id", "LEFT OUTER");
$this->db->join("it_ga ga", "w.a = ga.id", "LEFT OUTER");
$this->db->join("it_customer c", "ga.customer = c.id", "LEFT OUTER");

因此,当您看到我有不同的联接来获取这两种类型的客户名称时。 两个例子中的最后一个连接是重要的。我想加入同一个表(table_customer)。 如何实现它以结合此查询以获得两个联接到该一个现场客户。 我还尝试使用if查询:如果键入0 .. else键入1 ..但它不起作用。

如果你能帮助我,我会很高兴的! 如果有什么不清楚请问。 谢谢!

2 个答案:

答案 0 :(得分:5)

当然,只需给每个表一个不同的别名。

答案 1 :(得分:3)

是的,你可以加入一张桌子两次。你可以查看这个链接。 MySQL: How do I join same table multiple times?