Mysql 如何选择用于显示数据的语句
我在mysql中有这样的表Mysql 如何选择用于显示数据的语句,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,我在mysql中有这样的表 ----------------------------- |id|warehouse_id|item_id|qty| ---|------------|-------|---| |1 | 1 | 1 |10 | |2 | 1 | 2 |23 | |3 | 2 | 1 |45 | |4 | 2 | 2 |66 | |5 | 1 | 3 |4
-----------------------------
|id|warehouse_id|item_id|qty|
---|------------|-------|---|
|1 | 1 | 1 |10 |
|2 | 1 | 2 |23 |
|3 | 2 | 1 |45 |
|4 | 2 | 2 |66 |
|5 | 1 | 3 |44 |
------------------------------------------
|id|item_id|qty warehouse 1|qty warehouse 2
---|-------|---------------|-------------
|1 | 1 | 10 |45 |
|2 | 2 | 23 |66 |
|3 | 3 | 44 |0 |
ItemStockModel::get()
如何使用select语句向表显示我想要的内容
-----------------------------
|id|warehouse_id|item_id|qty|
---|------------|-------|---|
|1 | 1 | 1 |10 |
|2 | 1 | 2 |23 |
|3 | 2 | 1 |45 |
|4 | 2 | 2 |66 |
|5 | 1 | 3 |44 |
------------------------------------------
|id|item_id|qty warehouse 1|qty warehouse 2
---|-------|---------------|-------------
|1 | 1 | 10 |45 |
|2 | 2 | 23 |66 |
|3 | 3 | 44 |0 |
ItemStockModel::get()
我试着像这样使用有说服力的拉威尔
-----------------------------
|id|warehouse_id|item_id|qty|
---|------------|-------|---|
|1 | 1 | 1 |10 |
|2 | 1 | 2 |23 |
|3 | 2 | 1 |45 |
|4 | 2 | 2 |66 |
|5 | 1 | 3 |44 |
------------------------------------------
|id|item_id|qty warehouse 1|qty warehouse 2
---|-------|---------------|-------------
|1 | 1 | 10 |45 |
|2 | 2 | 23 |66 |
|3 | 3 | 44 |0 |
ItemStockModel::get()
谢谢如果您在sql中只有两个仓库,您可以试试
select distinct item_id, t1._qty qty_warehouse1, t2.qty qty_warehouse1
from my_table m
left join (
select item_id, qty
from my_table
where warehouse_id = 1
) t1 on t1.item_id = m.item_id
left join (
select item_id, qty
from my_table
where warehouse_id = 2
) t2 on t2.item_id = m.item_id
你要求的是打破规则,这是一种不好的做法 解决方案是在表中有一个一对多的关系,以便eloquent可以查询结果并创建具有所需关系的对象。 使您的情况适应此解决方案 如果无法修改该表,则 您必须获取所有项目的id, 循环每个对象,创建一个“each_id”对象,并添加到结果列表中 查询每个id以获取仓库id和数量,并将其添加到列表中 将此列表添加到每个_id对象
这会让你得到同样的结果,就像你有一对多关系的雄辩 您只有两个仓库,或者您有几个仓库??您应该为此使用联接查询@我有几个仓库,你能帮我吗?对于mysql中的几个仓库,你应该管理结果服务器端。。(不是sql)@scaisEdge如果我只有两个仓库,请给我一个使用sql或雄辩的Laravelow的例子谢谢,我很感激。如果我使用的是雄辩的laraveli,我不是雄辩的,但我假设你可以使用原始查询