2012-08-06 29 views
5

vì vậy tôi có hai bảng và tôi muốn lấy tất cả các hàng từ bảng 1 đáp ứng điều kiện mệnh đề where, và sau đó nối chúng với bảng hai dựa trên tham gia điều kiện.trong codeigniter làm thế nào để tôi tham gia với mệnh đề where

đây là bảng mẫu:

table1: 

col1 col2 col3 
1  a  val1 
2  b  val2 
3  c  val3 

table2: 

col1 col3 
1  someval1 
2  someval2 
3  someval3 

bây giờ tôi muốn lấy tất cả các hàng trong bảng 1 nơi col1 = 2, và tham gia những hàng với hàng từ table2 nơi table2.col1 = table1.col1. Điều đó có ý nghĩa?

+0

roytuts.com/codeigniter-join-example/ – user3470953

Trả lời

13

Nó được một lúc kể từ khi tôi viết CI, nhưng theo this docs page, giải pháp của bạn có thể trông như thế này:

$this->db->select('*'); 
$this->db->from('table1'); 
$this->db->join('table2', 'table1.col1 = table2.col1'); 
$this->db->where('table1.col1', 2); 

$query = $this->db->get(); 

lưu ý câu trả lời này là không có cách nào để hiểu như là một sự chứng thực làm việc với Code Igniter ;-)

+0

ya tôi cũng đang nghĩ về điều đó, ngoại trừ tôi không chắc chắn nếu mệnh đề where sẽ được áp dụng cho bảng 1 thay vì tham gia bảng 1 và bảng 2. – user1549397

+0

Điều đó có liên quan nhiều hơn đến cách trình điều khiển DB của bạn biên dịch các truy vấn của nó; nhưng trong hầu hết các trường hợp, mệnh đề where sẽ được áp dụng trước tiên, do đó truy vấn chỉ thực hiện phép nối trên một hàng khớp với mệnh đề where. –

+1

Nói cách khác, nó sẽ nhận thấy rằng nó có thể tránh được công việc bằng cách áp dụng mệnh đề where cho các hàng trong table1 đầu tiên, và * sau đó * thực hiện phép nối. Đây là những gì chúng tôi gọi là * xây dựng kế hoạch thực hiện truy vấn *. Trong hầu hết các trường hợp, các mệnh đề ON và WHERE được xử lý tương tự; và thường nó được thực hiện một cách rất hiệu quả. –

2

Hãy thử điều này:

$this->db->select('*'); // Select field 
$this->db->from('table1'); // from Table1 
$this->db->join('table2','table1.col1 = table2.col1','INNER'); // Join table1 with table2 based on the foreign key 
$this->db->where('table1.col1',2); // Set Filter 
$res = $this->db->get(); 

Hy vọng nó sẽ giúp :)

0
$this->db->select('book_id, book_name, author_name, category_name'); 
$this->db->from('books'); 
$this->db->join('category', 'category.category_id = books.category_id'); 
$this->db->where('category_name', 'Self Development'); 
$query = $this->db->get(); 

// Produces SQL: 
select book_id, book_name, author_name, category_name from books 
join category on category.category_id = books.category_id 
where category_name = "Self Development" 
Các vấn đề liên quan