0

我有一个 MySQL 数据库,其中包含两个用外键链接的表:

MatPr(id, Designation, threshold_stock)

MvtStock_MatPr(id, Qte_Mvt, Qte_Tot,idMatPr)

我想要的是获得最后一个 Qte_tot, Designation,threshold_stock where threshold_stock>qte_tot 我试过这段代码但没有工作:

SELECT MvtStock_MatPr.id,idMatPr, Nom, threshold_stock, Qte_Tot 
FROM MvtStock_MatPr, MatPr 
WHERE MatPr.id=MvtStock_MatPr.idMatPr AND  threshold_stock>Qte_Tot

这是样本数据集:

mysql> SELECT MvtStock_MatPr.id,idMatPr, Designation, threshold_stock, Qte_Tot FROM MvtStock_MatPr, MatPr WHERE MatPr.id=MvtStock_MatPr.idMatPr AND threshold_stock>Qte_Tot ORDER

通过 id,idMatPr;

| 编号 | idMatPr | 职称| 阈值库存| Qte_Tot |

| 1 | 1 | 巴克拉 | 120 | 10 |

| 2 | 2 | 拉链 | 130 | 20 |

| 3 | 1 | 巴克拉 | 120 | 30 |

| 7 | 2 | 拉链 | 130 | 50 |

4 行一组(0.00 秒)

mysql> SELECT * FROM MatPr;

| 编号 | 名称| 阈值库存|

| 1 | 巴克拉 | 120 |

| 2 | 拉链 | 130 |

2 行(0.00 秒)

mysql> SELECT * FROM MvtStock_MatPr;

| 编号 | 日期Mvt | Qte_Mvt | Qte_Tot | idMatPr |

| 1 | 2016-01-01 | 10 | 10 | 1 |

| 2 | 2016-02-02 | 20 | 20 | 2 |

| 3 | 2016-03-03 | 20 | 30 | 1 |

| 4 | 2016-03-03 | 100 | 130 | 1 |

| 5 | 2016-03-03 | 50 | 180 | 1 |

| 6 | 2016-03-03 | 20 | 200 | 1 |

| 7 | 2016-03-05 | 30 | 50 | 2 |

一组 7 行(0.00 秒)

我想得到的是:

| 编号 | idMatPr | 职称| 阈值库存| Qte_Tot

| 3 | 1 | 巴克拉 | 120 | 30 |

| 7 | 2 | 拉链 | 130 | 50 | +----+----------+--------+--------+---------+

感谢您的贡献

4

3 回答 3

0

试试这个查询:

select * from 
   ( SELECT MvtStock_MatPr.id,idMatPr,Designation, threshold_stock, Qte_Tot 
     FROM MvtStock_MatPr join MatPr 
     on MatPr.id=MvtStock_MatPr.idMatPr 
     where threshold_stock>Qte_Tot 
     order by DateMvt desc 
   ) T 
 group by T.idMatPr
于 2016-06-16T02:26:04.673 回答
0

使用以下查询

Select m1.id,m1.idMatpr,m.threshold_stock,m.Qte_Tot 
From MvtStock_Matpr m1 join Matpr m
On m1.idMatPr=m.id and m.threshold_stock>m1.Qte_Tot
于 2016-06-16T00:41:04.120 回答
0

我不确定我是否完全遵循您的问题:它是否只从结果集中选择一行?如果是这样,子查询是否可以解决您的问题?

SELECT *
FROM MatPr
WHERE ID = (
  SELECT idMatPr 
  FROM MvtStock_MatPr, MatPr 
  WHERE MatPr.id = MvtStock_MatPr.idMatPr 
    AND threshold_stock > Qte_Tot
  LIMIT 1
)

如果您只想从中选择行MatPr,这对您有用吗?

SELECT MatPr.*
FROM MvtStock_MatPr, MatPr 
WHERE MatPr.id = MvtStock_MatPr.idMatPr 
  AND threshold_stock > Qte_Tot

http://sqlfiddle.com/#!9/d4ef50/2

于 2016-06-16T00:44:37.903 回答