Полагаю, вам нужны две вещи:
1) Список всех предметов
2) Список всех предметов в коробках
Вы можете сделать это впара способов (я предполагаю структуру ваших таблиц здесь - я предполагаю, что ItemBox - это таблица ссылок)
a) Выберите все элементы, затем выберите список всех элементов в полях.:
SELECT I.ItemID,
I.Title,
B.BoxId,
B.Title
FROM Item I
INNER JOIN ItemBox IB ON (I.ItemID = IB.ItemID)
INNER JOIN Box B ON (IB.BoxID = B.BoxID)
ORDER BY B.Title, I.Title
Должен дать вам все элементы и их коробки.
Затем вы можете отобразить список всех элементов в форме и список идентификаторов ящиков (просто выберитеиз каждой таблицы).
Если вы кешируете результаты вышеупомянутого запроса (например, словарь, словарь BoxItem), то вы можете просто найти элемент на основе выбранного блока.
б) вы можете запускать запрос каждый раз, когда выбрано поле:
SELECT I.ItemID,
I.Title,
B.BoxId,
B.Title
FROM Item I
INNER JOIN ItemBox IB ON (I.ItemID = IB.ItemID)
INNER JOIN Box B ON (IB.BoxID = B.BoxID)
WHERE B.Id = @selected_boxid
ORDER BY B.Title, I.Title
и обновлять соответственно.
Вам нужны примеры для выполнения запроса, привязки к различным элементам управления и т. д.?
Вот версия, которая должна делать то, что вы хотите, основываясь на вашем комментарии:
SELECT I.ItemID,
I.Title,
CASE
WHEN IB.ItemID IS NULL THEN 0
ELSE 1
END AS ItemIsInBox
FROM Item I
LEFT OUTER JOIN ItemBox IB ON (I.ItemID = IB.ItemID);