2016-10-10 13 views
1

を接合別それ出力余分3行に参加するときH2データベース重複行をテーブルに参加しないとH2データベースSQLで次のクエリ出力一行テーブル

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

enter image description here

しかし、H2データベース内の:

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

NOTE - 列「COMPANY」は、そのデータベースから重複行のランダム名を選択します。

私はここで何をしていますか?私は問題は、結合テーブルと考えています。しかし、自分でそれを理解することはできません!

UPDATE: はおそらく、私はそれに参加する別のテーブルをしないのですが、「BILL.NAME」のデータが挿入されているところから、「ITEM」と呼ばれています。 "ITEM"テーブルには、 "COMPANY_ID"というカラムがあり、これは "COMPANY"テーブルの "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 COMPANY.ID=ITEMS.COMPANY_ID INNER JOIN ITEMS WHERE BILL.DATE LIKE '%9-10-2016'; 

私は3表 1. BILL 2. ITEM 3. COMPANY

BILLテーブルを持っています

billno,batch,product_name,qty,rate. 

このBILLテーブルは、販売請求書の詳細を保存します。

ITEMテーブルには、列を次のようしています

product_name,batch,qty,rate,expire_date,company_id 

表は、私が会社から購入していた製品を格納するために使用されるこのアイテムを。

COMPANYテーブルには、列を次のようしています

id,name,address,cell 

この会社のテーブルには、会社の詳細を格納するために使用されます。 javafxのコンボボックスにロードされます。選択されている場合、自動的にCOMPANYテーブルからIDが取得され、ITEM.COMPANY_IDに挿入されます。

さて、BILLテーブルから売上履歴を取得するためのクエリを設計する必要がありました。また、追加情報として、私はどの会社の製品が売り切れているかを見せたいと思います。

うまくいけば、今あなたたちは私を助けることができるでしょう!

+0

のようになります。申し訳ありませんが、あなたを取得できませんでした!結合クエリは、結合なしで最初のクエリとして1行だけを出力する必要があります。 – kodr

+0

あなたのjoin句は、指定された日付のすべての請求書を選択するだけで、会社のテーブルのデータは一切含まれません。したがって、指定された日付を持つ請求書ごとに、テーブル内の各会社の行が取得されます。おそらく、日付を照合するだけでなく、会社のテーブルから何かを請求テーブルに照合することを意図していたでしょうか? –

+0

別の言い方をすると、SQL文でどの会社を選択すべきだと思いますか? –

答えて

0

おそらくON句に他のJOIN条件を記述する必要があります。 テーブル(会社と請求書)をリンクするキーが必要です。あなたの会社であなたの「請求書」テーブルと「ID」でのcompany_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' 
+0

私のポストを更新しました..あなたはそれをチェックしてもらえますか? – kodr

+0

@rpo今、私はあなたがあなたの請求書と項目をon節を使って参加させるべきだと信じています: 'ON bill.product_name = item.product_name'。また、 'LIKE'節を' WHERE'に移動してください –

+0

おそらく、BILLに別の会社IDを追加した後で動作しているかもしれません。 – kodr

関連する問題