Выполнение запросов 4GL

Я новичок в этом языке и у меня проблемы с пониманием запросов.

Например:

Есть 2 таблицы базы данных: склад, товар. Таким образом, на каждом складе может быть несколько продуктов, а продукты могут храниться на разных складах.

Query:
   for each warehouse,
       each product:
   display warehouse.name, product.prodcode.
end.

дисплей понравится

warehousename   productcode
awarehouse       SKA-301

Итак, для этого результата эти столбцы отображают общий независимый результат, например. SKA-301 продукт не может быть в наличии. Или он будет отображать продукт в центре внимания? что, если у товара и склада нет связанных полей?

Пожалуйста помогите. Спасибо.


person Simoncat    schedule 26.08.2013    source источник
comment
Примечание. Запятые не должны находиться между полями в операторе отображения.   -  person Tim Kuehn    schedule 26.08.2013


Ответы (2)


В коде, который вы показали, вы получите каждый продукт для каждой итерации склада.

Чтобы получить продукты, относящиеся к конкретному складу, вам необходимо добавить критерий WHERE во 2-е предложение объединения. Предполагая, что у вас есть поле product.warehouseName, которое подходит для этой цели ....

for each warehouse no-lock,
  each product no-lock where product.warehouseName = warehouse.name:

  display
    warehouse.name
    product.prodcode
  .

end.

(Если для product.warehouseName нет индекса, это будет очень неэффективно.)

person Tom Bascom    schedule 26.08.2013
comment
Вы можете добавить этот запрос: над каждым оператором есть метка, полезная, например, с NEXT. Не уверен, что вы действительно можете (вы, очевидно, не должны) использовать это ключевое слово в качестве метки. - person Jensd; 26.08.2013
comment
На самом деле QUERY нельзя использовать в качестве метки для цикла. - person Jensd; 27.08.2013

Ваш запрос является компактной версией этой расширенной версии

for each warehouse:
   for each product:
      display warehouse.name, product.prodcode. 
   end.
end.

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

person Terry Bochaton    schedule 26.08.2013