Golden Basim Ответов: 1

Как выбрать две строки из второй таблицы для каждой строки в первой таблице в представлении mysql


Обновление

если у меня есть две таблицы (таблица элементов и таблица единиц измерения).

Таблица элементов выглядит так (st_items) :-
-------------------------------------------------------
stitems_ID ------ stitems_Name ------------ other info... ------
1          ------ item 1       ------------ .. -----------------
2          ------ item 2       ------------ .. -----------------
3          ------ item 3       ------------ .. -----------------
4          ------ item 4       ------------ .. -----------------


таблица единиц измерения выглядит следующим образом (st_items_units) :-
-------------------------------------------------------
id ------ stitems_ID  ------------ stitemsu_UnitNum ---
1  ------ 1           ------------ 1 ------------------
2  ------ 1           ------------ 10 -----------------
3  ------ 1           ------------ 100 ----------------
4  ------ 2           ------------ 1 ------------------
5  ------ 2           ------------ 12 -----------------
6  ------ 3           ------------ 1 ------------------
8  ------ 4           ------------ 1 ------------------
9  ------ 4           ------------ 12 -----------------
9  ------ 4           ------------ 100 ----------------

в качестве таблицы каждый элемент может иметь только одну единицу, или 2 единицы, или 3 единицы, или более.
я хочу выбрать две самые маленькие единицы (или повторить только одну, если есть одна единица для элемента). как эта таблица :

-------------------------------------------------------
stitems_ID ------ stitems_Name ------------ SmallUnit ------ LargeUnit ------
1          ------ item 1       ------------ 1 -------------- 2         ------
2          ------ item 2       ------------ 4 -------------- 5         ------
3          ------ item 3       ------------ 6 -------------- 6         ------
4          ------ item 4       ------------ 8 -------------- 9         ------


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

я создал представление, чтобы выбрать маленькую единицу, а затем выбрать большую единицу, но мне много раз не удавалось достичь правильного решения
LEFT JOIN (SELECT 
							  lunit.stitems_ID,
							  lunit.stitemsu_UnitName as LargeUnitID,
                              lunit.stitemsu_PurchasesPrice,
                              lunit.stitemsu_SalesPrice,
                              lunit.stitemsu_UnitNum
								  FROM st_items_units lunit
								  where lunit.stitemsu_UnitNum > 1
								  GROUP BY lunit.stitems_ID,lunit.stitemsu_UnitName,lunit.stitemsu_PurchasesPrice,lunit.stitemsu_SalesPrice, lunit.stitemsu_UnitNum
                                  order by lunit.stitemsu_UnitNum asc 
                                  limit 1) lunits
					   ON lunits.stitems_ID = items.stitems_ID



конечно это неправильным кодом. но он просто пытался объяснить то, что я пытался.

1 Ответов

Рейтинг:
0

Andre Oosthuizen

Вы можете найти полное объяснение Здесь на CodeProject с примерами того, как использовать -

INNER JOIN
LEFT JOIN
RIGHT JOIN
OUTER JOIN
LEFT JOIN EXCLUDING INNER JOIN
RIGHT JOIN EXCLUDING INNER JOIN
OUTER JOIN EXCLUDING INNER JOI


Richard MacCutchan

"ВНУТРЕННЯЯ ДЗЕИ"
То, что мы все ищем. :)

Golden Basim

я пробовал много раз , требуемый запрос сложен, а результат все равно не соответствует действительным данным.
могу ли я опубликовать свой код, чтобы просмотреть его? спасибо