編集:フィドルで試してみましたが、左の結合の上に最大(または最小)でグループ化する必要があります:
SELECT item_master.item_id,
MAX(item_master.price * tax_master_vat.tax_value / 100) as VAT,
MAX(item_master.price * tax_master_lbt.tax_value / 100) as LBT
FROM item_master
LEFT JOIN item_tax ON item_master.item_id = item_tax.item_id
LEFT JOIN tax_master tax_master_vat ON item_tax.tax_id = tax_master_vat.tax_id
AND tax_master_vat.tax_name = 'VAT'
LEFT JOIN tax_master tax_master_lbt ON item_tax.tax_id = tax_master_lbt.tax_id
AND tax_master_lbt.tax_name = 'LBT'
GROUP BY item_master.item_id
特定のアイテムにリンクされた tax_value がない場合は、NULL を返す必要があります (NULL との乗算は NULL です)。「null」(または何も表示しない) とは異なるものを表示したい場合は、COALESCE を使用できます。合計金額を含めたい場合:
価格または合計を追加したい場合は、item_master テーブルでこれを結合したままにすることができます。
SELECT item_master.item_id,
tax.VAT,
tax.LBT,
item_master.price + COALESCE(tax.VAT, 0) + COALESCE(tax.LBT, 0) AS Total
FROM item_master
LEFT JOIN ( SELECT item_master.item_id,
MAX(item_master.price * tax_master_vat.tax_value / 100) as VAT,
MAX(item_master.price * tax_master_lbt.tax_value / 100) as LBT
FROM item_master
LEFT JOIN item_tax ON item_master.item_id = item_tax.item_id
LEFT JOIN tax_master tax_master_vat ON item_tax.tax_id = tax_master_vat.tax_id
AND tax_master_vat.tax_name = 'VAT'
LEFT JOIN tax_master tax_master_lbt ON item_tax.tax_id = tax_master_lbt.tax_id
AND tax_master_lbt.tax_name = 'LBT'
GROUP BY item_master.item_id ) tax ON item_master.item_id = tax.item_id
または、OVER PARTITION BY 句を使用できます (item_id のみでグループ化できますが、価格フィールドは引き続き含めることができます)。
SELECT item_id,
price,
VAT,
LBT,
price + COALESCE(VAT, 0) + COALESCE(LBT, 0) AS Total
FROM ( SELECT DISTINCT
item_master.item_id,
item_master.price,
MAX(item_master.price * tax_master_vat.tax_value / 100) OVER (PARTITION BY item_master.item_id) as VAT,
MAX(item_master.price * tax_master_lbt.tax_value / 100) OVER (PARTITION BY item_master.item_id) as LBT
FROM item_master
LEFT JOIN item_tax ON item_master.item_id = item_tax.item_id
LEFT JOIN tax_master tax_master_vat ON item_tax.tax_id = tax_master_vat.tax_id
AND tax_master_vat.tax_name = 'VAT'
LEFT JOIN tax_master tax_master_lbt ON item_tax.tax_id = tax_master_lbt.tax_id
AND tax_master_lbt.tax_name = 'LBT'
) price_and_tax
SQL フィドルの例