簡體   English   中英

在數據庫中顯示列中的重復數據和非重復數據-Laravel

[英]Displaying duplicates and non-duplicates data from column in database - laravel

在我的數據庫中,我有一個清單,這些清單是我希望收集並為其生成餅圖的客戶收集的響應。 (例如Google表單)。

在我的數據庫中,我得到的響應是相同的,其他不像下面這樣

Client 1   Client 2    Client
  Yes        Yes         No

所以在上面的列中,我有Yes(2) and No(1) 我想收集,計算和顯示我的查詢響應,如下所示

Yes : 2  , No: 1

但是下面的代碼

 public function answers_chart(Survey $survey)
   {
         $response = DB::select( DB::raw(" select * from (
          SELECT questionnaire_id, COUNT(answer) as e_count
          FROM Answer
          GROUP BY answer
          )a where  a.e_count > 1)); 
   }

我得到如下響應,這意味着它只計算Yes

[{"e_count":2}]

我如何實現這樣的目標?

公共功能up()

 {
        Schema::create('Answer', function (Blueprint $table) {
            $table->increments('id');         
            $table->integer('question_id');
            $table->integer('questionnaire_id');
            $table->string('answer');
            $table->timestamps();
        });
    }

您的a.e_count>1。這意味着GROUP BY答案中僅包含1個“否”,而您只希望包含大於1個“否”或“是”的答案。 您應該刪除a where a.e_count > 1)

我強烈不建議這樣做。 Laravel具有強大的內置Eloquent ORM。 這里看看它以更好地使用Laravel框架!

可能使用案例陳述會更好,例如

SELECT
COUNT(CASE WHEN answer = '1' THEN 1 END) AS yes,
COUNT(CASE WHEN answer= '0' THEN 1 END) AS no
FROM ANSWER

嘗試這個:

Model::select(DB::raw("COUNT(CASE WHEN answer = 'Yes' THEN 1 END) AS e_count"))->first(); // Eloquent approach

DB::table('answer')->select(DB::raw("COUNT(CASE WHEN answer = 'Yes' THEN 1 END) AS e_count"))->first(); // Query Builder approach

暫無
暫無

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

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