Mysql : как выбрать вторую строку, если есть более одной записи, и выбрать первую, Если есть только одна запись?
привет,
у меня есть несколько предметов внутри st_items таблица и ее единицы измерения, хранящиеся в st_items_units как показано в этой таблице (показать единицы измерения пункта (1) и пункта (2):
stitemsu_ID -- stitems_ID -- stitemsu_UnitName -- stitemsu_UnitNum -- 1 ------------ 1 ----------- Piece -------------- 1 ----------------- 2 ------------ 1 ----------- Doz -------------- 12 ---------------- 3 ------------ 1 ----------- Box -------------- 36 ---------------- 4 ------------ 2 ----------- Piece -------------- 1 -----------------
в виде таблицы пункт 1 есть 3 единицы и пункт 2 повестки дня есть только один.
мне нужно творить Представление MySQL это показывает его наименьшие две единицы (1-я и 2-я), основанные на количестве частей в каждой из них (stitemsu_UnitName), так что результат будет таким :
stitems_ID -- SmallUnit -- LargeUnit -- stitemsu_UnitNum --- 1 ----------- Piece ------ Doz -------- 12 ----------------- 2 ----------- Piece ------ Piece ------ 1 -----------------
Что я уже пробовал:
я попробовал этот код , и он успешно показал первую единицу (кусок), но мне не удалось показать вторую.
LEFT JOIN (SELECT lunit.stitems_ID, lunit.stitemsu_UnitName as LargeUnitID, lunit.stitemsu_UnitNum FROM st_items_units lunit GROUP BY lunit.stitems_ID order by lunit.stitemsu_UnitNum desc limit 1,1) lunits ON lunits.stitems_ID = items.stitems_ID
пожалуйста, проверьте полный код, который я написал.
CREATE OR REPLACE VIEW `view_items_stock_per_store_with_small_large_unit` as SELECT items.stitems_ID, items.stitems_Status, items.stitems_Name, items.stitems_Type, items.stitems_Pharma_ActiveIngredient, items.stitems_Code, items.stcate_ID, items.stitems_Manufacturer, cat.stcate_Name, manuf.manu_Name, sunits.SmallUnitID, sUName.Unit as SmallUnit, lunits.LargeUnitID, lUName.Unit as LargeUnit, lunits.stitemsu_UnitNum, (CASE WHEN items.stitems_Type = 0 THEN COALESCE(ca.Amount, 0) WHEN items.stitems_Type = 1 THEN COALESCE(pa.Amount,0) END) AS stock, (CASE WHEN items.stitems_Type = 0 THEN ca.StoreID WHEN items.stitems_Type = 1 THEN pa.ss_StoreID END) AS storeID, stores.store_Name, (CASE WHEN items.stitems_Type = 0 THEN COALESCE(ca.TotalCost, 0) WHEN items.stitems_Type = 1 THEN COALESCE(pa.TotalCost,0) END) AS totalCost, (CASE WHEN items.stitems_Type = 0 THEN COALESCE(ca.TotalCost, 0) / COALESCE(ca.Amount, 0) WHEN items.stitems_Type = 1 THEN COALESCE(pa.TotalCost,0) / COALESCE(pa.Amount,0) END) AS unitCost FROM st_items items LEFT JOIN (SELECT sunit.stitems_ID, sunit.stitemsu_UnitName as SmallUnitID, sunit.stitemsu_UnitNum FROM st_items_units sunit where sunit.stitemsu_UnitNum =1 GROUP BY sunit.stitems_ID) sunits ON sunits.stitems_ID = items.stitems_ID LEFT JOIN (SELECT lunit.stitems_ID, lunit.stitemsu_UnitName as LargeUnitID, lunit.stitemsu_UnitNum FROM st_items_units lunit GROUP BY lunit.stitems_ID order by lunit.stitemsu_UnitNum desc limit 1,1) lunits ON lunits.stitems_ID = items.stitems_ID // ... the reset of the code
CHill60
Я предлагаю вам удалить весь код, который не имеет отношения к заявленной вами проблеме - никто не собирается читать все это
Golden Basim
я уже сделал это я пишу и то и другое