2013-08-26 61 views
1

我是新來的這種語言,並有一些問題理解查詢。進度4GL查詢

例如:

有2個數據庫表:倉庫,產品。所以每個倉庫可以有多個產品,產品可以存儲在不同的倉庫中。

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

顯示會喜歡

warehousename productcode 
awarehouse  SKA-301 

所以對於這樣的結果,是這些列顯示總獨立結果,例如。 SKA-301產品可能無法識別。或者它會在awarehouse中顯示產品?如果產品和倉庫沒有相關領域?

請幫幫我。謝謝。

+1

注 - 逗號「,」不屬於顯示語句中的字段之間。 –

回答

4

在您已經顯示的代碼中,您將獲得倉庫每次迭代的每個產品。

要獲得特定倉庫的產品,您需要將WHERE標準添加到聯接的第二個子句。假設你有一個會適合這個目的的product.warehouseName場....

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

    display 
    warehouse.name 
    product.prodcode 
    . 

end. 

(如果在product.warehouseName沒有索引,這將是非常低效

+0

您可以在每個語句的上方添加「query:」是一個標籤,例如對於NEXT很有用。不確定你是否真的可以(你顯然不應該)使用該關鍵字作爲標籤。 – Jensd

+0

實際上,「QUERY」不能用作循環的標籤。 – Jensd

0

您查詢是此擴展版本的縮小版本

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

它們都實現相同的目的。我會建議,因爲你開始擴大查詢出來,一旦你瞭解的關係,然後回到緊湊每個,每個版本