У меня есть 3 таблицы,левой присоединиться к CodeIgniter
itemmaster
|--------|----------|
| id | name |
|--------|----------|
| 1 | Pizza |
|--------|----------|
| 2 | Burger |
|--------|----------|
| 3 | Pepsi |
---------------------
order
|--------|----------|
|orderid | date |
|--------|----------|
| 1 | 1-1-11 |
|--------|----------|
| 2 | 2-1-11 |
|--------|----------|
| 3 | 3-1-11 |
---------------------
orderdetails
|--------|-------------|---------|---------|
| id | orderid |itemid |quantity |
|--------|-------------|---------|---------|
| 1 | 1 | 1 | 10 |
|--------|-------------|---------|---------|
| 2 | 1 | 2 | 20 |
|--------|-------------|---------|---------|
| 3 | 2 | 1 | 10 |
-------------------------------------------
Я хочу присоединиться к этим 3 таблицы, чтобы получить количество предметов в порядке, помещенной на определенную дату. То, что я пытался это
$this->db->from('itemmaster');
$this->db->join('orderdetails', 'orderdetails.itemid= itemmaster.id','left');
$this->db->join('order', 'order.orderid= orderdetails.orderid');
$this->db->where('order.date',"1-1-11");
$query = $this->db->get();
я получил результат, как,
Pizza------ 10
Burger------10
То, что я хочу,
Pizza-------10
Burger------20
Pepsi-------0
попробуйте сделать ваше второе присоединение к левому объединению тоже. В SQL напрямую id пытается использовать coalesce (что-то заменяет нулевое значение). Например, coalesce (numberofBurger, 0). Если numberofBurger имеет значение null, вы увидите 0 в результатах запроса – Alex
@Alex: Спасибо за вашу помощь. Я попытался сделать второе соединение слева, но все же я получаю только 1 элемент. –
, если мы шаг за шагом подойдем и сделаем одно соединение, вы всегда получаете только 1 результат? – Alex