Golden Basim Ответов: 1

Выражение #6 select list не входит в предложение group by и содержит неагрегированный столбец


я создал это представление для расчета общих запасов каждого товара в каждом магазине как :

CREATE OR REPLACE VIEW `view_items_stocks_smallest_unit_prices_noserials` as
							  SELECT items.stitems_ID,
							  items.stitems_Status,
							  items.stitems_Name,
							  items.stitems_Type,
							  items.stitems_Code,
                              unitsdet.DetunitID,
							  unitsnamesdet.UnitName,
                              ca.NOSStoreID,
							  COALESCE(ca.Amount, 0) AS Stock,
                              ca.MaxPurchasesPrice,
                              ca.purchases_price_withoutDiscOrXtra
					   FROM st_items items
					   LEFT JOIN (SELECT sns.stitems_ID,
                                         sns.StoreID AS NOSStoreID,
										 SUM(sns.StockQnty) AS Amount,
                                         MIN(sns.purchases_price) AS MaxPurchasesPrice,
                                         MAX(sns.purchases_price_withoutDiscOrXtra) AS purchases_price_withoutDiscOrXtra
								  FROM stock_noserials sns
								  GROUP BY sns.stitems_ID , NOSStoreID) ca
					   ON ca.stitems_ID = items.stitems_ID
                       LEFT JOIN (SELECT units.stitemsu_ID as DetunitID,
										 units.stitemsu_UnitName as unitID,
                                         units.stitems_ID as ItemIDa
								  FROM st_items_units units
								  WHERE units.stitemsu_UnitNum = 1
								  GROUP BY units.stitemsu_ID) unitsdet
					   ON items.stitems_ID = ItemIDa
                       LEFT JOIN (SELECT unitsnames.ID as UnameID,
										 unitsnames.Unit as UnitName
								  FROM st_units_name unitsnames
								  GROUP BY unitsnames.ID) unitsnamesdet
					   ON unitsdet.unitID = UnameID
					GROUP BY items.stitems_ID, ca.NOSStoreID;



теперь я пытаюсь выбрать из него, используя EF6 в качестве :

var StocksData = DB1.view_items_stocks_smallest_unit_prices_noserials.Where(u => u.stitems_ID == itemID && u.NOSStoreID == storeID);
                            int sstock = Convert.ToInt32( StocksData.FirstOrDefault().Stock);


но эта ошибка появляется :
выражение #6 select list не входит в предложение group by и содержит неагрегированный столбец ' unitsdet.DetunitID' , который функционально не зависит от предложения colmuns group by, компилируется с помощью Sql_mode = only_full_group by

Что я уже пробовал:

- я удалил эту строку
GROUP BY units.stitemsu_ID
но появляется та же ошибка.
- Я заменил эту строку
GROUP BY sns.stitems_ID , NOSStoreID
с этой линией
GROUP BY sns.stitems_ID
. и ошибка исчезла, но мне нужно также сгруппировать результаты с идентификатором магазина.

1 Ответов

Рейтинг:
4

Golden Basim

спасибо за комментарий ..
пожалуйста, помогите мне это недооценить .- я должен объединиться со всеми кольмунами ? как :

GROUP BY items.stitems_ID, ca.NOSStoreID,unitsdet.DetunitID,ca.Amount;

OriginalGriff

Перейдите по ссылке и прочитайте ее - вам нужно понять, что делает GROUP BY.