2010-05-05 37 views
7

Làm cách nào để chọn các hàng từ hai hoặc nhiều bảng?Trình viết mã: Chọn từ nhiều bảng

Tôi đang thiết lĩnh vực mặc định cho một hình thức, và tôi cần các giá trị từ hai bảng ...

mã hiện tại của tôi đọc:

$this->CI->db->select('*'); 
    $this->CI->db->from('user_profiles'); 
    $this->CI->db->where('user_id' , $id); 
    $user = $this->CI->db->get(); 
    $user = $user->row_array(); 
    $this->CI->validation->set_default_value($user); 

Trả lời

19

Ví dụ trong Hướng dẫn sử dụng nên giải thích điều này:

$this->db->select('*'); // <-- There is never any reason to write this line! 
$this->db->from('blogs'); 
$this->db->join('comments', 'comments.id = blogs.id'); 

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

// Produces: 
// SELECT * FROM blogs 
// JOIN comments ON comments.id = blogs.id 

Xem toàn bộ điều dưới Active Record trang trong Hướng dẫn sử dụng.

+0

Ví dụ trong Hướng dẫn sử dụng dường như không tạo ra một trường từ bảng thứ hai. Làm thế nào để bạn làm điều đó? –

+0

* = mọi thứ, từ tất cả các bảng có sẵn. Nếu nó không hiển thị bạn đang làm gì đó sai. Ngoài ra nếu bạn có hai trường có cùng tên trong các bảng khác nhau, thì chỉ có một trường sẽ hiển thị. Bạn cần thực hiện 'foo as bar' để lấy' -> bar' –

0
$SqlInfo="select a.name, b.data fromtable1 a, table2 b where a.id=b.a_id"; 
$query = $this->db->query($SqlInfo); 

thử cách này, bạn có thể thêm một bảng thứ ba có tên là c và thêm một lệnh 'và' vào lệnh sql.

+0

tôi là một Noob lớn. Bạn có thể giải thích điều này nhiều hơn một chút không? –

9

Chỉ cần thêm bảng khác vào phương thức "-> từ()". Một cái gì đó như:

$this->db->select('t1.field, t2.field2') 
      ->from('table1 AS t1, table2 AS t2') 
      ->where('t1.id = t2.table1_id') 
      ->where('t1.user_id', $user_id); 
+0

Điều đó sẽ tạo ra cú pháp bị hỏng. –

+0

Không phải là kết thúc của tôi. Bạn có thể xây dựng? – Favio

+1

Cú pháp đó chỉ được hỗ trợ trong php5 – Mint

1

Tôi nghĩ cú pháp không đúng. Bạn cần chọn một bản ghi. Tôi có hai bảng, và tôi có một id từ một bảng chuyển bởi tham số, và mối quan hệ của cả hai bảng.

8

Tôi nghĩ rằng câu hỏi không quá nhiều về việc tham gia như cách hiển thị giá trị từ hai bảng khác nhau - Hướng dẫn sử dụng dường như không giải thích được điều này.

Dưới đây là quan điểm của tôi:

$this->db->select('u.*, c.company, r.description'); 
    $this->db->from('users u, company c, roles r'); 
    $this->db->where('c.id = u.id_company'); 
    $this->db->where('r.permissions = u.permissions'); 
    $query = $this->db->get(); 
+0

Đây chính xác là những gì tôi cần xem. Không chắc chắn nếu một chuỗi phân cách bằng dấu phẩy hoặc mảng có nhiều giá trị sẽ là cú pháp đúng. Cũng không chắc chắn về việc kết hợp chúng trong phương thức where. – notacouch

+0

Bạn có thể thực hiện việc này nếu bạn cần bộ bản ghi: trả về $ this-> db-> get() -> result(); –

+0

giải pháp tốt nhất, đã làm việc cho tôi –

1

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

$this->db->select('*') 
      ->from('student') 
      ->where('student.roll_no',$id) 
      ->join('student_details','student_details.roll_no = student.roll_no') 
      ->join('course_details','course_details.roll_no = student.roll_no'); 
    $query = $this->db->get(); 
    return $query->row_array(); 
Các vấn đề liên quan