2013-10-02 73 views
0

我正在使用codeigniter。从两个mysql表中选择mysql查询

我们有两个mysql表。

我正在做的是将第一个表格中的所有细节提供给html页面以让所有用户查看它。但是现在我想添加一些与第一个表中的列相关的细节。

我的意思是,我在第一个表中调用“Pending_on”的列中插入了一些分支名称 ,并在第二个表中插入了这些部门的联系详细信息。

因此,如果我们认为在第一个表第五行pending_on列的值为“HR”,那么我想显示HR部门的电话号码。

那么,我该如何写一个查询呢?

+2

你需要的是连接查询,你可以在这里找到更多的信息:http://ellislab.com/codeigniter/user-guide/database/active_record.html#select –

+0

其实我不知道该怎么做。你能告诉我怎么样? – Yasitha

回答

2

对于你的情况,这里有一个例子:

有2台名为进入订阅

 entry 
     field1 publisherId 
     field2 entry 

     subscription 
     field1 myId 
     field2 friendId 

您可以使用JOIN 。在普通的SQL:

SELECT e.publisherId, e.entry 
FROM entry e 
JOIN subscription s 
ON s.friendId = e.publisherId 
WHERE s.myId = 1234 
+0

我可以使用这个没有哪里线索? – Yasitha

+2

是的,但它会得到不止一行。 – Jeemusu

+0

是的,我需要采取第一个表中的所有行 – Yasitha

1

让我们把你的例子。您的第一个表中有一个名称为pending_on的名称,在第二个表中有您的department_name列。找到下面的代码用于连接这两个表,

$this->db->select('firsttable.*,secondtable.contact_details'); 
$this->db->from('firsttable'); 
$this->db->join('secondtable', 'firsttable.pending_on = secondtable.department_name','left'); 
$query = $this->db->get(); 

所以,在第一个表中的第二个表和pending_on的部门名称应具有相同的价值,你提到的“HR”。我的建议是将表的ID作为参考而不是部门名称。希望这可以帮助。

+0

这是行得通的,但如果两个表中都没有匹配的项目,则此查询不会给出我任何事情。但我想要的是我需要采取第一张表的所有行,如果有或没有匹配的项目都在 – Yasitha

+1

$ this-> db-> join('secondtable','firsttable.pending_on = secondtable.department_name','left “); 希望这会满足你的条件! :) –

+1

**'$ this-> db-> join('secondtable','firsttable.pending_on = secondtable.department_name','left');'**希望这会满足您的条件! :) –

1

这是我用来做我的工作的查询

谢谢去MR。 Yuvvaraj Bathrabagu

$ this-> db-> select('*'); $ this-> db-> from('new_users'); $ this-> db-> join('contact','new_users.pending_on = contact.dep','left'); $ query = $ this-> db-> get(); $ data = $ query-> result_array();