如何使用USING子句编写此查询。我试着收到错误

时间:2015-11-09 18:30:01

标签: sql

SELECT
  VENDORS.VENDOR_NAME, INVOICE_LINE_ITEMS.LINE_ITEM_DESCRIPTION
FROM
  VENDORS, INVOICE_LINE_ITEMS
USING
  LINE_ITEM_DESCRIPTION;
WHERE
(INVOICE_LINE_ITEMS.LINE_ITEM_DESCRIPTION LIKE '%Card%' OR 
  INVOICE_LINE_ITEMS.LINE_ITEM_DESCRIPTION LIKE '%COBAL%')

我该如何正确编写此查询?

2 个答案:

答案 0 :(得分:1)

您想要的查询如下所示:

SELECT v.VENDOR_NAME, li.LINE_ITEM_DESCRIPTION
FROM VENDORS v JOIN
     INVOICE_LINE_ITEMS li
     USING (VENDOR_ID)
WHERE li.LINE_ITEM_DESCRIPTION LIKE '%Card%' OR 
      li.LINE_ITEM_DESCRIPTION LIKE '%COBAL%';

注意:

  • 我猜测用于JOIN的列真的是什么。我怀疑这是一个项目描述。
  • USINGJOIN语法的一部分。简单的规则:从不FROM子句中使用逗号; 始终使用显式JOIN语法。
  • 表别名使查询更易于编写和阅读。
  • 使用USING时,JOIN的列位于括号中。
  • 分号仅在SQL语句的末尾。

答案 1 :(得分:0)

由于;条款中的FROM,您收到的错误如下所示

FROM
  VENDORS, INVOICE_LINE_ITEMS
USING
  LINE_ITEM_DESCRIPTION; <-- Here
WHERE ....

应该是

FROM
  VENDORS v JOIN INVOICE_LINE_ITEMS i
USING (LINE_ITEM_DESCRIPTION)
WHERE ....