加入表

时间:2016-10-10 19:23:22

标签: sql h2

在H2数据库中SQL不加入表,以下查询输出一行:

SELECT NAME as Product,DATE,RATE,QTY FROM BILL WHERE DATE LIKE '%9-10-2016'

enter image description here

但是在加入另一个数据库的H2数据库中,它输出额外的3行:

select BILL.NAME as product,
       COMPANY.NAME AS Company,
       BILL.DATE as ddate,
       BILL.RATE as rate,
       BILL.QTY as quantity 
FROM BILL INNER JOIN COMPANY ON BILL.DATE LIKE '%9-10-2016'

enter image description here

注意 - “COMPANY”列从该数据库中为复制行选择随机名称。

我在这里做错了什么?我认为问题在于连接表。但是我自己也搞清楚了!

更新 也许我错过了另一个要加入的表,它被称为“ITEM”,其中插入了“BILL.NAME”数据。在“ITEM”表中有一个名为“COMPANY_ID”的列,它引用了“COMPANY”表“ID”列。

以下是我对查询的新IDEA,但结果相同:

select BILL.NAME as product,
   COMPANY.NAME AS Company,
   BILL.DATE as ddate,
   BILL.RATE as rate,
   BILL.QTY as quantity FROM BILL INNER JOIN COMPANY ON COMPANY.ID=ITEMS.COMPANY_ID INNER JOIN ITEMS WHERE BILL.DATE LIKE '%9-10-2016';

在数据库中我有3个表 比尔 2.项目 3.公司

BILL表包含以下列:

billno,batch,product_name,qty,rate.

此BILL表用于保存销售发票明细。

ITEM表格包含以下栏目:

product_name,batch,qty,rate,expire_date,company_id

此ITEM表用于存储我从公司购买的产品。

COMPANY表格包含以下栏目:

id,name,address,cell

该公司表用于存储公司详细信息。并加载到javafx组合框。如果选择了一个,它将自动从COMPANY表中获取ID并插入ITEM.COMPANY_ID。

好吧,现在我需要设计一个查询来从BILL表中获取销售历史记录。此外,作为额外信息,我想表明哪家公司的产品已售罄。

希望你们现在能够帮助我了!

1 个答案:

答案 0 :(得分:0)

您可能需要在ON子句中编写其他JOIN条件。 它应该包含一些链接表(账单到公司)的密钥。

如果你的" bill"表和" id"在您的公司表中查询应如下所示

select BILL.NAME as product,COMPANY.NAME AS Company,BILL.DATE as ddate,BILL.RATE as rate,BILL.QTY as quantity
FROM BILL
INNER JOIN COMPANY ON bill.company_id = company.id
WHERE BILL.DATE LIKE '%9-10-2016'