【发布时间】:2014-10-07 15:53:33
【问题描述】:
我有 3 张桌子,
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:感谢您的帮助。我尝试了第二次加入,但我仍然只得到 1 项。
-
如果我们一步一步地一次加入一个,你总是只得到一个结果吗?
-
如果只有一个连接(第一个)并且没有 where 语句,我会按预期获得多个项目。
-
我猜只有第二个左连接只会返回 1 个结果?这有点奇怪。我没有任何方法可以在我的计算机 atm 上进行测试。 :/您的查询或表声明中是否有错误?因为它是写 itemmaster.itemid 而表只有一个列名 id
标签: php mysql sql codeigniter