使用Access构建MySQL查询

时间:2012-12-04 18:18:48

标签: mysql

我有以下查询,它出现错误

SELECT CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado, Sum([Precio]*(100-[CRM_PresupuestosDetalles].[Bonif])/100*[CRM_PresupuestosDetalles].[Cantidad]) AS LineaNeto
FROM CRM_PRESUPUESTOS RIGHT JOIN CRM_PresupuestosDetalles ON CRM_PRESUPUESTOS.ID_Presupuesto = CRM_PresupuestosDetalles.ID_Presupuesto
GROUP BY CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado
HAVING ((DATE((CRM_PRESUPUESTOS.Fecha_Alta))=CurDate()));

错误是

  

[Err] 1064 - 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'[Precio] (100- [CRM_PresupuestosDetalles]。[Bonif])/ 100 [CRM_PresupuestosDetalles]'附近的第1行使用正确的语法< / p>

我该如何解决这个问题?问题可能是我用Access

构建它们

2 个答案:

答案 0 :(得分:1)

方括号[ ]是特定于t-sql的。它们告诉解析器所包含的文本是一个字符串,并保证您不会错误地使用t-sql保留字。 MySql类似的方法是使用反引号:`

SELECT CRM_PRESUPUESTOS.Fecha_Alta, 
CRM_PRESUPUESTOS.ID_VendedorAsignado, 
Sum(`Precio`*(100-`CRM_PresupuestosDetalles`.`Bonif`)/100*`CRM_PresupuestosDetalles`.`Cantidad`) AS LineaNeto
FROM CRM_PRESUPUESTOS RIGHT JOIN CRM_PresupuestosDetalles ON CRM_PRESUPUESTOS.ID_Presupuesto = CRM_PresupuestosDetalles.ID_Presupuesto
GROUP BY CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado
HAVING ((DATE((CRM_PRESUPUESTOS.Fecha_Alta))=CurDate()));

答案 1 :(得分:0)

试试这个::

SELECT 
CRM_PRESUPUESTOS.Fecha_Alta, 
CRM_PRESUPUESTOS.ID_VendedorAsignado, 
Sum(Precio*(100-CRM_PresupuestosDetalles.Bonif/100*CRM_PresupuestosDetalles.Cantidad) AS LineaNeto

FROM CRM_PRESUPUESTOS RIGHT 
JOIN CRM_PresupuestosDetalles ON CRM_PRESUPUESTOS.ID_Presupuesto = CRM_PresupuestosDetalles.ID_Presupuesto

GROUP BY CRM_PRESUPUESTOS.Fecha_Alta, CRM_PRESUPUESTOS.ID_VendedorAsignado
HAVING DATEDIFF(CRM_PRESUPUESTOS.Fecha_Alta, CurDate)=0