2017-09-05 37 views
1

我有两个表上有一个“数量”列。 我需要选择列部分,名称,颜色, - 从T1 (T1.quantity T2.quantity)AS DIFF 一些上T2 加入其中(T1.quantity - T2.quantity)> 0与laravel和查询生成器检索列的差异为2

随着MySQL和phpMyAdmin我做到了这一点:

SELECT T1.part, T1.name, T1.color, (T1.quantity - T2.quantity) AS diff 
FROM T1 
JOIN T2 
    ON T1.part = T2.part 
    AND T1.color = T2.color 
WHERE T1.quantity - T2.quantity > 0 

你能帮我用laravel和查询生成器做同样的事吗?

我不明白如何在SELECT和WHERE子句中添加算术计算。

回答

1

我认为这应该工作:

$query = DB::select(DB::raw(" 
      SELECT T1.part, T1.name, T1.color, 
       (T1.quantity - T2.quantity) AS diff 
      FROM T1 JOIN T2 ON 
       T1.part = T2.part AND T1.color = T2.color 
      WHERE T1.quantity - T2.quantity > 0 
")); 
+0

我试着与你的解决方案,但没有成功。我也用这个缩放了您的查询: '$ query = DB :: select(DB :: raw('SELECT T1.name,T1.part,T1.color,T1.quantity - 10 as Diff FROM T1') );' 并没有工作。似乎算术calc给出了这个问题,因为没有子句:'T1.quantity - 10',但只有'T1.quantity'的作品。 –

+0

好了,现在可以使用了。问题出在数据库表上。数量字段是UNSIGNED,但我也可以有负面结果,所以在数据库中更改列后,它全部完成。 –