簡體   English   中英

加入3個表時MySQL查詢錯誤

[英]MySQL query error when joining 3 tables

我有以下3表:

在此處輸入圖片說明

我需要設置一個HTML表,其中顯示以下內容:

        <tr class="bg-info">
          <th>Med ID</th>
          <th>Med Name</th>
          <th>Med Expiry</th>
          <th>Barcode</th>
          <th>Number of Tablets received</th>
          <th>Total Number of Pills received</th>
          <th>Date Received</th>
          <th>Pills distributed</th>
          <th>Still (in tablets)</th>
          <th>Still (in pills)</th>
        </tr>

所以我創建了這個SQL查詢:

select t1.med_id,
t3.med_name,
t1.med_expiry, 
t1.med_barcode, 
t1.med_tablet, 
t1.med_pill, 
t1.med_received,
sum(t2.given_quantity)
FROM med_pharmacy t1, consultation_med t2, medication t3 WHERE t1.med_pharmacy_id = t2.med_pharmacy_id AND t1.med_id=t3.med_id
AND t1.clinic_id='361'

而且我收到以下錯誤:

錯誤代碼:1140。在沒有GROUP BY的聚合查詢中,SELECT列表的表達式#1包含非聚合列'ncd.t1.med_id'; 這與sql_mode = only_full_group_by不兼容

您使用的GROUP BY錯誤。 規則是SELECT子句中的每一列也都在GROUP BY子句中,或者必須對其應用聚合函數(例如count,min,max,avg)。

sql_mode ONLY_FULL_GROUP_BY可以防止這種情況。 當您禁用它時會發生什么,可以在以下問題中看到: 為什么我使用case語句在第二個計數器中獲得Null值

也可以在鏈接的問題中找到解決方案。 在此處重復說明:應用聚合函數或將列包括在group by子句中。

您可以這樣修復它:

select t1.med_id,
t3.med_name,
t1.med_expiry, 
t1.med_barcode, 
t1.med_tablet, 
t1.med_pill, 
t1.med_received,
sum(t2.given_quantity)
FROM med_pharmacy t1, consultation_med t2, medication t3 WHERE t1.med_pharmacy_id = t2.med_pharmacy_id AND t1.med_id=t3.med_id
AND t1.clinic_id='361'
group by 
t1.med_id,
t3.med_name,
t1.med_expiry, 
t1.med_barcode, 
t1.med_tablet, 
t1.med_pill, 
t1.med_received

或像這樣

select 
MAX(t1.med_id),
MAX(t3.med_name),
MAX(t1.med_expiry), 
MAX(t1.med_barcode), 
MAX(t1.med_tablet), 
MAX(t1.med_pill), 
MAX(t1.med_received),
sum(t2.given_quantity)
FROM med_pharmacy t1, consultation_med t2, medication t3 WHERE t1.med_pharmacy_id = t2.med_pharmacy_id AND t1.med_id=t3.med_id
AND t1.clinic_id='361'

或兩者結合,取決於您的需求。

當您使用MySQL 5.7時,還有一個新函數any_value()可以用來代替聚合函數。 但是,顧名思義,它返回該組的任何值。

暫無
暫無

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

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