2017-07-12 9 views
0
select t1.customer_code from pbosdeposit t1,pbosinvoice t2 
inner join sap_customer t3 ON 
t3.customer_id = 
(select t4.id from customer t4 where t4.customer_code = t1.customer_code) 

私はそれを行うために多くの方法を試しましたが、それでも複数の部分の識別子が拘束できないことを示しています。 誰かがマルチパート識別子とは何かを説明できますか? SAP_Customerため複数パート識別子「t1.customer_code」をバインドできませんでしたか?

テーブル構造

CREATE TABLE sap_customer (
    customer_id VARCHAR(32) NOT NULL PRIMARY KEY, 
    sap_cardcode VARCHAR(15), 
    void_flg SMALLINT DEFAULT 0, 
    status_ind SMALLINT DEFAULT 0, 
    err_msg VARCHAR(250), 
    last_update_by VARCHAR(32), 
    last_update_on DATETIME, 
    created_by VARCHAR(32) NOT NULL, 
    created_on DATETIME NOT NULL 
    ) 

サンプルデータpbosinvoiceため

056e322ae18b401392386c129fe49ae7 CT-000001 0 1 NULL NULL NULL 5 2017-06-30 19:03:37.427 

テーブル構造

CREATE TABLE pbosinvoice(
    id VARCHAR(32) NOT NULL PRIMARY KEY, 
    inv_type VARCHAR(3), 
    inv_num VARCHAR(20), 
    inv_date DATE, 
    inv_due_date DATE, 
    customer_code VARCHAR(10), 
    customer_name VARCHAR(150), 
    payment_ind VARCHAR(1) NOT NULL, 
    org_amt DECIMAL(12,2) DEFAULT 0, 
    tax_amt DECIMAL(12,2) DEFAULT 0, 
    inv_amt DECIMAL(12,2) DEFAULT 0, 
    cleared_amt DECIMAL(12,2) DEFAULT 0, 
    void_flg SMALLINT DEFAULT 0, 
    surcharge_inv_flg SMALLINT DEFAULT 0, 
    last_update_by VARCHAR(32), 
    last_update_on DATETIME, 
    created_by VARCHAR(32), 
    created_on DATETIME 
) 

サンプルデータ

0d1c7bd169b94732b771f75c61ea2713 I01 VI17010013 24/01/2017 23/02/2017 C0001 ASIALINK CARGO & PACKING AGENCY SDN BHD F 260.00 0.00 260.00 260.00 0 NULL NULL 6 24/01/2017 11:46:42 AM 
pbosdeposit

CREATE TABLE pbosdeposit (
    id VARCHAR(32) NOT NULL PRIMARY KEY, 
    customer_code VARCHAR(10) NOT NULL, 
    deposit_num VARCHAR(9), 
    transaction_date DATE, 
    transaction_type VARCHAR(4), 
    payment_type VARCHAR(1), 
    transaction_amt DECIMAL(10,4), 
    cleared_amt DECIMAL(10,4), 
    remarks VARCHAR(150), 
    issued_date DATE, 
    issued_bank VARCHAR(50), 
    issued_bank_location VARCHAR(100), 
    expiry_date DATE, 
    ref_num VARCHAR(20), 
    chq_num VARCHAR(20), 
    card_num VARCHAR(20), 
    card_type VARCHAR(1), 
    voided_by VARCHAR(32), 
    voided_on DATETIME, 
    last_update_by VARCHAR(32), 
    last_update_on DATETIME, 
    created_by VARCHAR(32), 
    created_on DATETIME 
) 

サンプルデータ

20e06bb857124f1cbd8ba60712aff4c5 C0001 D16110012 14/11/2016 CASH C 3000.0000 3000.0000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 6 28/11/2016 7:42:05 AM 

テーブル構造用

テーブル構造顧客

CREATE TABLE customer 
(
    id      VARCHAR(32) NOT NULL PRIMARY KEY, 
    customer_code   VARCHAR(10) NOT NULL, 
    customer_name   VARCHAR(150) NOT NULL, 
    co_reg_no    VARCHAR(15) NOT NULL, 
    tax_identification_no VARCHAR(20), 
    acc_status    VARCHAR(1) NOT NULL, 
    remarks    VARCHAR(150), 
    last_update_by   VARCHAR(32), 
    last_update_on   DATETIME, 
    created_by    VARCHAR(32) NOT NULL, 
    created_on    DATETIME NOT NULL 
) 

サンプルデータのための

829yfh823f793f7f32 C0001 ASIALINK CARGO & PACKING AGENCY SDN BHD 214124 135276311515 A NULL NULL NULL - 22/09/2016 12:25:00 PM 
+0

。 –

+0

まだ同じエラーが出ていますt1.customer_codeは複数のパーツID – hunt

+0

です。テーブル構造、サンプルデータ、正確なエラーメッセージを共有してください。 –

答えて

0

あなたの要件を理解していると仮定すると、サンプルデータは結果を得られません。 customerテーブルで提供されている唯一の行がidの値で、テーブル sap_customerで指定した唯一の行のcustomer_idと一致しないためです。

しかし、クエリは混乱しており、正しく構築されている必要があります(実際には、実際のデータの結果が得られればうれしい)。だから、最初の

、サンプル表を作成し、移入:(他の列は、ノイズのみを作成し、実際のクエリで使用される列だけを覚えておいてください)

CREATE TABLE sap_customer (
    customer_id VARCHAR(32) NOT NULL PRIMARY KEY 
    -- We don't cate about all the other column for this question... 
) 
INSERT INTO sap_customer (customer_id) VALUES ('056e322ae18b401392386c129fe49ae7') 

CREATE TABLE pbosinvoice (
    id VARCHAR(32) NOT NULL PRIMARY KEY, 
    customer_code VARCHAR(10) 
    -- We don't cate about all the other column for this question... 
) 
INSERT INTO pbosinvoice (id, customer_code) VALUES ('0d1c7bd169b94732b771f75c61ea2713', 'C0001') 

CREATE TABLE pbosdeposit (
    id VARCHAR(32) NOT NULL PRIMARY KEY, 
    customer_code VARCHAR(10) NOT NULL 
    -- We don't cate about all the other column for this question... 
) 
INSERT INTO pbosdeposit (id, customer_code) VALUES ('20e06bb857124f1cbd8ba60712aff4c5', 'C0001') 

CREATE TABLE customer 
(
    id      VARCHAR(32) NOT NULL PRIMARY KEY, 
    customer_code   VARCHAR(10) NOT NULL 
    -- We don't cate about all the other column for this question... 
) 
INSERT INTO customer (id, customer_code) VALUES ('829yfh823f793f7f32', 'C0001') 

とし、クエリを:

select t1.customer_code 
from pbosdeposit as t1 
inner join pbosinvoice as t2 on t1.customer_code = t2.customer_code 
inner join customer as t3 on t1.customer_code = t3.customer_code 
inner join sap_customer as t4 ON t3.id = t4.customer_id 

私はcustomersap_customerの間で結合の順序を変更しました。 customerテーブル内id値がsap_customerテーブル(056e322ae18b401392386c129fe49ae7)にcustomer_idと同じであった場合

は、このクエリは値C0001と単一のレコードを返すことになります。

t1.customer_code = t2.customer_code は、クエリの末尾に不足している

See a live demo on rextester

関連する問題