2013-04-24 60 views
0

我使用iReport創建了一些箱子標籤,並且需要將每個箱子標籤的數據相乘。SQL,根據變量從單個表格多次返回一行

我有2個參數,@id備案編號和@typ的封裝類型需要

SELECT 
    dr_id, 
    dr_to_customer, 
    dr_company_name, 
    dr_address_0, 
    dr_address_1, 
    dr_address_2, 
    dr_address_3, 
    dr_postcode, 
    dr_contact, 
    dr_per_packs, 
    dr_per_boxes, 
    dr_per_pallets 
FROM delreq 
WHERE dr_id = @id AND ??timesTOrepeat?? = @typ (a string) 

我需要基礎上,數量在任何包,箱或X次返回的每一行托盤。

所以,我需要首先選擇基於@typ的數量,然後找出如何將行數相乘。

幫助。

+0

我想你最好創建本作中,你使用的SQL的頂部任何代碼'for'循環。 [這可能也有幫助](http://msdn.microsoft.com/en-us/library/ms178642.aspx)。 – Blazemonger 2013-04-24 15:18:12

+1

你能解釋一下這個好一點嗎?你試圖獲得數量 - 然後呢?數量與其他表中的記錄數量之間的關係是什麼? – MMM 2013-04-24 15:20:31

+0

User23158 ... - 你在使用什麼樣的數據庫? – Lisa 2013-04-24 15:23:22

回答

1

您可以嘗試使用外連接來實現此目的。試試這個:

SELECT 
    dr_id, 
    dr_to_customer, 
    dr_company_name, 
    dr_address_0, 
    dr_address_1, 
    dr_address_2, 
    dr_address_3, 
    dr_postcode, 
    dr_contact, 
    dr_per_packs, 
    dr_per_boxes, 
    dr_per_pallets 
FROM delreq a, (select -1 id from all_objects where rownum < @typ) b 
WHERE dr_id = @id AND a.dr_id(+) = b.id; 

我假設這裏dr_id不會有值-1也假定數據庫就是甲骨文[不知道緊靠其他數據庫。

+0

你認爲正確的,dr_id不會有-1,它的一個MySQL數據庫,但我使用iReport和SQL語句來挑選數據。 'all_objects',這是另一張表嗎?我只有一張表,實際上沒有權限在數據庫中創建其他人(由於權限)。我簡化了Select語句,因爲涉及其他表和連接 – user2315810 2013-04-24 15:32:19

+0

我認爲MySQL將允許您從DUAL中選擇。 – Lisa 2013-04-24 16:58:29

相關問題