0
我有以下查詢:笨的Active Record/MySQL查詢 - GROUP_BY導致返回只有一行
$this->db
->select('SQL_CALC_FOUND_ROWS null as rows
,services.*
,service_categories.*
,categories.*
,table4.*', FALSE)
->from('services')
->where('services.user_id', $user_id)
->join('service_categories', 'service_categories.service_id = services.service_id')
->join('categories', 'categories.cat_id= service_categories.cat_id')
->join('table4', 'table4.service_id= services.service_id', 'left')
->group_by('services.service_id')
->order_by('services.service_id', 'DESC');
$query = $this->db->get();
的表是這樣的:
Table: services
------------------------------------------------
| service_id | other_service_columns | user_id |
-----------------------------------------------|
| 23 | other data | 14 |
| 24 | other data | 14 |
------------------------------------------------
Table: service_categories
---------------------------------------
| service_cat_id | cat_id | service_id|
---------------------------------------
| 1 | 924 | 23 |
| 2 | 863 | 23 |
| 3 | 506 | 24 |
| 4 | 510 | 24 |
---------------------------------------
Table: categories
---------------------
| cat_id | cat_name |
---------------------
| 924 | cleaning |
| 863 | washing |
| 506 | drying |
| 510 | scrubbing|
---------------------
表4中可能沒有任何結果,所以我正在做一個左連接。但是,當我通過service_id進行分組時,我沒有從「service_categories」和「類別」表中獲取所有相關類別 - 查詢中只返回一行。 group_concat是答案嗎?如果是這樣,我不知道如何使用它來獲得我需要的結果 - 即查詢中返回的所有相關類別。請幫忙!
我需要能夠使用的foreach在它迭代處理查詢的結果,在這樣的觀點產生了一句:
--------------------------------------------------------
| Service ID | Other Service Data | Service Categories |
--------------------------------------------------------
| 23 | Data for Service 23| cleaning, washing |
| 24 | Data for Service 24| drying, scrubbing |
--------------------------------------------------------
SQL_CALC_FOUND_ROWS可能是不相關的問題,但我使用它的查詢,因爲我需要計算找到的結果的數量。我使用$ data ['count'] = $ this-> db-> query('SELECT FOUND_ROWS()count;') - > row() - > count返回計數作爲查詢的一部分。但是,如果沒有分組,返回的行數等於service_categories的數量,而不是服務的數量。其實我也在這個問題上犯了一個錯誤 - 道歉 - 應該是 - > where('services.user_id',$ user_id) – whispersan
你可以通過'count($ result)'返回記錄的數量而不需要第二次訪問數據庫。現在你可以編輯你的問題,並根據你提供的樣本數據顯示你想要的輸出是什麼? – peterm
好的謝謝你的幫助,我編輯了問題以顯示所需的輸出 – whispersan