Недопустимый идентификатор дубликатов данных - PullRequest
2 голосов
/ 15 апреля 2011

Мой запрос показывает все возможные комбинации результатов для этого запроса, когда я использую конструктор запросов.

select   
     "PURCHASEDETAIL"."PMID" as "PMID",
     "PURCHASEDETAIL"."CUSTOMER_ID" as "CUSTOMERID",
     "PRODUCT"."DESCRIPTION" as "DESCRIPTION",
     "PRODUCT"."PRICE" as "PRICE",
     "PURCHASEDETAIL"."QUANTITY" as "QUANTITY",
     "SUPPLIER"."SUPPLIER_NAME" as "SUPPLIER_NAME",
     "PURCHASEMASTER"."PURCHASE_DATE_TIME" as "PURCHASE_DATE_TIME" 
 from    
     "SUPPLIER"
 left join product
 ON supplier.supplierid = product.supplierid
 left join purchasemaster
 on purchasemaster.customerid = purchasedetail.customerid
 left join purchasedetail
 on purchasedetail.pmid = purchasemaster.pmid

Когда я ввожу вышеупомянутую информацию, чтобы извлечь информацию из таблицы 4, я получаю следующую ошибку.

ORA-00904: "PURCHASEDETAIL". "CUSTOMER_ID": неверный идентификатор

Есть идеи, почему?

1 Ответ

2 голосов
/ 15 апреля 2011

1) Даже если вы отображаете псевдоним «CUSTOMER_ID» с «CUSTOMERID» при отображении результатов, вы все равно должны использовать «CUSTOMER_ID» (фактическое имя столбца) в условии соединения. Если у вас есть внешний запрос, который дополнительно присоединяет..фильтры..и так далее, вы можете использовать псевдоним "CUSTOMERID"

select e.empno , d.deptno Department_No
  from scott_emp e,
       scott_dept d
  where d.Department_No = e.deptno;

ORA-00904: "D"."DEPARTMENT_NO": invalid identifier

использование ..

select e.empno , d.deptno Department_No
  from scott_emp e,
       scott_dept d
  where d.deptno = e.deptno;

или

select * from 
(select deptno Department_no,dname
  from scott_dept) d,
  scott_emp e
where d.Department_no = e.deptno

2) Возможно, не связано с вашим вопросом .. но ..

Второе левое соединение

<SUPPLIER>...
<PRODUCT>....
LEFT JOIN
           purchasemaster
        ON purchasemaster.customerid = **purchasedetail.customerid**

Разве это условие не должно быть в файле supplier.customerid? (если имя столбца одинаковое?)

__ * Обновление на основе предположений об имени столбца * --------

select sup.supplier_name,
       prd.description,
       prd.price,
       prm.purchase_date_time,
       prd.pmid,
       prd.customer_id,
       prd.quantity
  from supplier sup
       left join product prd
            on (sup.supplierid = prd.productid)
       left join purchasedetail prd
            on (prd.productid = product.productid)
       left join purchasemaster prm
            on (prd.purchaseid = prm.purchaseid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...