那是我的查询
$sel = mysql_query("SELECT store.mainpnid AS mainpnid, store.status AS status, store.owner as owner, SUM(store.cnt) AS total
FROM store
LEFT JOIN parts ON parts.id=store.mainpnid
LEFT JOIN parts ON parts.minimum > total
WHERE station='SOF' status='SA' AND owner='GL' GROUP BY mainpnid") or die(mysql_error());
现在返回Not unique table/alias: 'parts'
。
主要思想是我必须对两个表的一个查询取最小值。
表Parts
使用的列:id
,minimums
。
表Store
:mainpnid
,status
,owner
,station
,cnt
。
我在Parts
表中有一个主要产品,他们在表存储中有一些批次,它们的数量之间存在差异,我要SUM
每种产品的所有数量,并检查是否满足以下最低要求在表parts
中。
mainpnid
是parts
表中零件的ID。owner
是静态的,称为GL cnt
是每批次的数量status
是静态的,称为SA(可服务)station
是静态的,称为SOF 有人可以纠正我的查询吗?
答案 0 :(得分:0)
除非您使用两个具有不同别名的表,否则您将两次使用同一表 无论如何,您似乎想要过滤结果以获取SUM(store.cnt)的汇总结果总别名。 有子句
SELECT store.mainpnid AS mainpnid
, store.status AS status
, store.owner as owner, SUM(store.cnt) AS total
FROM store
LEFT JOIN parts ON parts.id=store.mainpnid
WHERE station='SOF'
AND status='SA'
AND owner='GL'
GROUP BY mainpnid, store.status, store.owner
HAVING b.minimum > total
最后一次在select列中没有聚集,这在最新的mysql版本中是不允许的(默认)。您应该或将这些列添加到group by子句中,或使用如下所示的适当聚集功能
$sel = mysql_query("
SELECT store.mainpnid AS mainpnid
, max(store.status) AS status
, max(store.owner) as owner
, SUM(store.cnt) AS total
FROM store LEFT JOIN parts ON parts.id=store.mainpnid
WHERE station='SOF'
AND status='SA'
AND owner='GL'
GROUP BY mainpnid
HAVING parts.minimum > total
") or die(mysql_error());