簡體   English   中英

Laravel 5.2中Select語句中的子查詢

[英]Subquery in Select Statement in Laravel 5.2

我想在選擇語句中使用此子查詢

select category from `categories` WHERE id = `products`.`category_id`

這是我方法的選擇語句部分

$query = $this->select(
   DB::raw('COUNT(DISTINCT(`order_details`.`product_id`)) as productCount'), 'products.category_id',
   DB::raw('('.DB::select('select category from `categories` WHERE id = `products`.`category_id` ').') AS category ')
);

錯誤:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.category_id' in 'where clause' (SQL: select category from `categories` WHERE id = `products`.`category_id` )

我討厭使用直接選擇語句。 因為這不好,如果我要更改數據庫。

盡管使用了直接選擇語句,但它不起作用。 我怎樣才能做到這一點 ?

只需更新您的以下聲明

DB::raw('('.DB::select('select category from `categories` WHERE id = `products`.`category_id` ').') AS category ')

進入

DB::raw('(select category from `categories` WHERE id = `products`.`category_id`) AS category')

在這里的錯誤是未知列products.category_id你需要檢查你已經category_id你的表內

請遵循以下示例之一的子查詢:

$result = static::select('id')
        ->where( 'id', '!=', $currentLevelId)
        ->where('level', '>', DB::raw("(SELECT level FROM " . $this->table . " WHERE id='".$currentLevelId."')") )
        ->orderBy('level')->first();

結果查詢:

SELECT * FROM `approval_levels` WHERE `id` != 2 AND `level` > (SELECT LEVEL
 FROM approval_levels WHERE id='2') ORDER BY `level` ASC LIMIT 1

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM