2017-09-05 40 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,但我也可以有負面結果,所以在數據庫中更改列後,它全部完成。 –