Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何选择用于显示数据的语句_Mysql_Laravel_Eloquent - Fatal编程技术网

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

我在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     |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,我不是雄辩的,但我假设你可以使用原始查询