0

MDW_CUSTOMER_ACCOUNTS表有CUSTOMER_ID,ACCOUNT_IDINVOICE_ID

MDW_INVOICE表有INVOICE_ID, INVOICE_TRANSACTIONID1, INVOICE_TRANSACTIONID2,INVOICE_TRANSACTIONID3

MDW_INVOICE_TRANSACTION桌子INVOICE_TRANSACTIONID有,COST

我正在尝试使用查询从三个表中打印ACCOUNT_ID, COST1, COST2,COST3

SQL> SELECT a.account_id , to_number(i1.cost) , to_number(i2.cost) , to_number(i3.cost)
  2  FROM mdw_customer_accounts a,
  3  mdw_invoice b,
  4  mdw_invoice_transaction c
  5  LEFT JOIN mdw_invoice i1 ON b.INVOICE_TRANSACTIONID1 = i1.INVOICE_TRANSACTIONID
  6  LEFT JOIN mdw_invoice i2 ON b.INVOICE_TRANSACTIONID2 = i2.INVOICE_TRANSACTIONID
  7  LEFT JOIN mdw_invoice i3 ON b.INVOICE_TRANSACTIONID3 =i3.INVOICE_TRANSACTIONID
  8  WHERE a.customer_id='CUS0031' and a.invoice_id=b.invoice_id and a.STATUS='ACTIVE';

我收到以下错误

LEFT JOIN mdw_invoice i1 ON b.INVOICE_TRANSACTIONID1 = i1.INVOICE_TRANSACTIONID * 第 5 行出现错误:ORA-00904:“I1”。“INVOICE_TRANSACTIONID”:标识符无效

4

3 回答 3

3

表 MDW_INVOICE 没有名为 INVOICE_TRANSACTIONID 的列。

正如你所说,它有 INVOICE_TRANSACTIONID1、INVOICE_TRANSACTIONID2 和 INVOICE_TRANSACTIONID3 列。

于 2013-06-07T14:09:14.097 回答
2

尝试:

SELECT a.account_id, to_number(i1.cost), to_number(i2.cost), to_number(i3.cost)
FROM mdw_customer_accounts a
JOIN mdw_invoice b ON a.invoice_id=b.invoice_id
LEFT JOIN mdw_invoice_transaction i1 
       ON b.INVOICE_TRANSACTIONID1 = i1.INVOICE_TRANSACTIONID
LEFT JOIN mdw_invoice_transaction i2 
       ON b.INVOICE_TRANSACTIONID2 = i2.INVOICE_TRANSACTIONID
LEFT JOIN mdw_invoice_transaction i3 
       ON b.INVOICE_TRANSACTIONID3 =i3.INVOICE_TRANSACTIONID
WHERE a.customer_id='CUS0031' and a.STATUS='ACTIVE';
于 2013-06-07T14:40:47.597 回答
0

混合符号不是最好的主意。

CREATE TABLE MDW_CUSTOMER_ACCOUNTS(
    CUSTOMER_ID NUMBER, ACCOUNT_ID NUMBER, INVOICE_ID NUMBER
);

CREATE TABLE MDW_INVOICE(
    INVOICE_ID NUMBER, INVOICE_TRANSACTIONID1 NUMBER, INVOICE_TRANSACTIONID2 NUMBER, INVOICE_TRANSACTIONID3 NUMBER
);

CREATE TABLE MDW_INVOICE_TRANSACTION (
    INVOICE_TRANSACTIONID NUMBER, COST NUMBER
);

SELECT  a.account_id --, to_number(i1.cost) , to_number(i2.cost) , to_number(i3.cost) -- there is no cost column in mdw_invoice table
FROM    mdw_customer_accounts a
JOIN    mdw_invoice b       ON a.invoice_id = b.invoice_id
        -- JOIN mdw_invoice_transaction c -- join on what??? Cartesian join???
LEFT    JOIN mdw_invoice i1 ON b.INVOICE_TRANSACTIONID1 = i1.INVOICE_TRANSACTIONID1 -- <---- number at the end
LEFT    JOIN mdw_invoice i2 ON b.INVOICE_TRANSACTIONID2 = i2.INVOICE_TRANSACTIONID2 -- <---- number at the end
LEFT    JOIN mdw_invoice i3 ON b.INVOICE_TRANSACTIONID3 = i3.INVOICE_TRANSACTIONID3 -- <---- number at the end
WHERE   a.customer_id='CUS0031' 
        -- AND a.STATUS='ACTIVE'; -- where is status column?
;
于 2013-06-07T14:31:13.217 回答