2017-09-05 5 views
1

両方に「数量」列を持つ2つの表があります。いくつかは、ここで、(T1.quantity - T2.quantity)T2 に参加してT1 からの差分 AS - 私は列の部分、名前、色、(T2.quantity T1.quantity)を選択する必要があり > 0laravelとQuery Builderで2の差として列を取得します。

付き

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とクエリビルダと同じことをやって私を助けることができます:MySQLとphpMyAdminが、私はこれをしませんでしたか?

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をDiff FROM T1'としています) ); ' それは動作しませんでした。算術計算では、節がなければ「T1.quantity-10」だけで、「T1.quantity」だけが働くので、問題が発生しているようです。 –

+0

これでOKです。問題はdbテーブルにありました。数量フィールドはUNSIGNEDでしたが、DBの列が変更された後もすべてが終了したので、結果がマイナスになる可能性があります。 –

関連する問題