#sql #sql-server #linq
#sql #sql-сервер #linq
Вопрос:
Из двух таблиц: Item amp; Box я хочу определить, что каждый элемент в таблице Item принадлежит Box_ID в таблице Box на основе высоты и ширины.
- Если высота и ширина элемента, которые больше, чем высота и ширина поля, то этот элемент принадлежит этому box_id. Пример:
I1 4 1 B1 Box 1
- Каждый элемент принадлежит только box_id.
Как выполнить запрос в sql для возврата в виде приведенной ниже таблицы результатов?
Комментарии:
1. Почему все элементы имеют одинаковый идентификатор?
2. @FuzzyTree: Извините, это моя ошибка. Я исправил.
3. как элемент1 4: 1 соответствует b1 1:1
4. @Azar: высота и ширина элемента 1 больше высоты и ширины блока b1, поэтому элемент1 принадлежит блоку b1.
5. Привет, ты можешь проверить запрос ниже…
Ответ №1:
Ухх, наконец, я сделал это, проверьте и дайте мне знать
Select M.*,Box_id,Box_name
from
(
Select max(B.height) Box_Height ,max(B.width) Box_Width,M.height ,M.width
from Item M join Box b on M.Height>=B.Height and M.Width>=B.Width
group by M.height,M.width
) t
join Item M on M.Height = t.height and M.width = t.width
join Box b on B.Height = t.Box_height and B.width = t.Box_width
Комментарии:
1. Отлично! Я очень восхищаюсь вами. Большое спасибо!