Элементы запроса на основе размера

#sql #sql-server #linq

#sql #sql-сервер #linq

Вопрос:

Из двух таблиц: Item amp; Box я хочу определить, что каждый элемент в таблице Item принадлежит Box_ID в таблице Box на основе высоты и ширины.

  1. Если высота и ширина элемента, которые больше, чем высота и ширина поля, то этот элемент принадлежит этому box_id. Пример: I1 4 1 B1 Box 1
  2. Каждый элемент принадлежит только 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. Отлично! Я очень восхищаюсь вами. Большое спасибо!