Skip to main content

ERROR 3953: Missing FROM-clause entry for table

  • June 8, 2016
  • 11 replies
  • 33 views

rvoorhees

I have created a merge statement and am receiving the error message

 

ERROR 3953: Missing FROM-clause entry for table "AMAZON_PRODUCT_REVIEWS_TEST"

 

for the following merge

 

MERGE INTO SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST_V2

USING SBM_WORKSPACE.LATEST_AMAZON_REVIEWS_VW SOURCE

ON (AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_ID AND SOURCE.AUDIT_INSERT_DATE <> AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE )

--WHERE AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE IS NOT NULL

WHEN MATCHED THEN UPDATE SET


AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_DATE = SOURCE.Review_Date
,AMAZON_PRODUCT_REVIEWS_TEST.PLATFORM = SOURCE.Platform
,AMAZON_PRODUCT_REVIEWS_TEST.PRODUCT_ID = SOURCE.Product_Id
,AMAZON_PRODUCT_REVIEWS_TEST.PRODUCT_TITLE = SOURCE.Product_Title
,AMAZON_PRODUCT_REVIEWS_TEST.RATING = SOURCE.Rating
,AMAZON_PRODUCT_REVIEWS_TEST.RATING_SCALE = SOURCE.Rating_Scale
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_Id
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEWER = SOURCE.Reviewer
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_TEXT = SOURCE.Review_Text
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_TITLE = SOURCE.Title
,AMAZON_PRODUCT_REVIEWS_TEST.VERIFIED_PURCHASE_INDICATOR = SOURCE.Verified_Purchase_Indicator
,AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_LAST_UPDATE = SOURCE.AUDIT_INSERT_DATE



WHEN NOT MATCHED THEN INSERT
(
REVIEW_DATE
,PLATFORM
,PRODUCT_ID
,PRODUCT_TITLE
,RATING
,RATING_SCALE
,REVIEW_ID
,REVIEWER
,REVIEW_TEXT
,REVIEW_TITLE
,VERIFIED_PURCHASE_INDICATOR
, AUDIT_INSERT_DATE)

VALUES(
SOURCE.Review_Date,
SOURCE.Platform,
SOURCE."Product_ID",
SOURCE."Product_Title",
SOURCE.Rating,
SOURCE."Rating_Scale",
SOURCE."Review_ID",
SOURCE.Reviewer,
SOURCE.Review_Text,
SOURCE.Title,
SOURCE."Verified_Purchase_Indicator",
SOURCE.AUDIT_INSERT_DATE)

 

 

11 replies

eli_revach
Forum|alt.badge.img+2
  • Participating Frequently
  • June 9, 2016

Hi ,

You need to replace all over the AMAZON_PRODUCT_REVIEWS_TEST_V2 with AMAZON_PRODUCT_REVIEWS_TEST .

 

I hope you will find helpful

 

Thanks 


rvoorhees
  • Author
  • Participating Frequently
  • June 13, 2016

So I changed it merge into AMAZON_PRODUCT_REVIEWS_TEST and get the same error.

 

Any thoughts?

 

 

MERGE INTO SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST

USING SBM_WORKSPACE.LATEST_AMAZON_REVIEWS_VW SOURCE

ON (AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_ID AND SOURCE.AUDIT_INSERT_DATE <> AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE )


WHEN MATCHED THEN UPDATE SET


AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_DATE = SOURCE.Review_Date
,AMAZON_PRODUCT_REVIEWS_TEST.PLATFORM = SOURCE.Platform
,AMAZON_PRODUCT_REVIEWS_TEST.PRODUCT_ID = SOURCE.Product_Id
,AMAZON_PRODUCT_REVIEWS_TEST.PRODUCT_TITLE = SOURCE.Product_Title
,AMAZON_PRODUCT_REVIEWS_TEST.RATING = SOURCE.Rating
,AMAZON_PRODUCT_REVIEWS_TEST.RATING_SCALE = SOURCE.Rating_Scale
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_Id
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEWER = SOURCE.Reviewer
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_TEXT = SOURCE.Review_Text
,AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_TITLE = SOURCE.Title
,AMAZON_PRODUCT_REVIEWS_TEST.VERIFIED_PURCHASE_INDICATOR = SOURCE.Verified_Purchase_Indicator
,AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_LAST_UPDATE = SOURCE.AUDIT_INSERT_DATE



WHEN NOT MATCHED THEN INSERT
(
REVIEW_DATE
,PLATFORM
,PRODUCT_ID
,PRODUCT_TITLE
,RATING
,RATING_SCALE
,REVIEW_ID
,REVIEWER
,REVIEW_TEXT
,REVIEW_TITLE
,VERIFIED_PURCHASE_INDICATOR
, AUDIT_INSERT_DATE)

VALUES(
SOURCE.Review_Date,
SOURCE.Platform,
SOURCE."Product_ID",
SOURCE."Product_Title",
SOURCE.Rating,
SOURCE."Rating_Scale",
SOURCE."Review_ID",
SOURCE.Reviewer,
SOURCE.Review_Text,
SOURCE.Title,
SOURCE."Verified_Purchase_Indicator",
SOURCE.AUDIT_INSERT_DATE)


SruthiA
Forum|alt.badge.img+1
  • Participating Frequently
  • June 13, 2016

Hi,

 

    Can you change the condition in merge statement as follows and give a try

 

AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE<> SOURCE.AUDIT_INSERT_DATE 

 

 

 

Sruthi


rvoorhees
  • Author
  • Participating Frequently
  • June 13, 2016

Thanks for the reply Sruthi. I changed the condition to an = and received the same error.

 

ON (AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_ID AND SOURCE.AUDIT_INSERT_DATE = AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE )

 

I am perplexed by this.

 

 


SruthiA
Forum|alt.badge.img+1
  • Participating Frequently
  • June 13, 2016

try using destination table first and then source in second condition as follows

 

 

 AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE  = SOURCE.AUDIT_INSERT_DATE


rvoorhees
  • Author
  • Participating Frequently
  • June 13, 2016

I just tried that and received the same error.


rvoorhees
  • Author
  • Participating Frequently
  • June 14, 2016

By the way I tried alternate tables to perform a merge and received the same error message. Is this a bug?


SruthiA
Forum|alt.badge.img+1
  • Participating Frequently
  • June 14, 2016

can you share me DDL of the tables, I will try it out and let you know


rvoorhees
  • Author
  • Participating Frequently
  • June 14, 2016

I have the DDL files.

 

Thank you!


rvoorhees
  • Author
  • Participating Frequently
  • June 27, 2016

Sruthia... any additional thoughts on the solution?


Pravesh
Forum|alt.badge.img
  • Participating Frequently
  • June 28, 2016

You are getting this error because you haven't mentioned schema name inside join condition.

 

Change it to:

 

ON (SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_ID AND SOURCE.AUDIT_INSERT_DATE <> SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE )

 

 

After making this change, you should still get another error, complaining about column names in "WHEN MATCHED THEN UPDATE SET" block. Change fully qualified name access to only column name (for table AMAZON_PRODUCT_REVIEWS_TEST) and you should be fine. Documentation doesn't mention this (perhaps a doc bug), however Vertica doesn't seem to like Alias or table name for target columns in WHEN MATCHED THEN UPDATE SET block.

 

Statement given below should work fine:

 

 

MERGE INTO SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST
USING SBM_WORKSPACE.LATEST_AMAZON_REVIEWS_VW SOURCE
ON (SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST.REVIEW_ID = SOURCE.Review_ID AND SOURCE.AUDIT_INSERT_DATE <> SBM_WORKSPACE.AMAZON_PRODUCT_REVIEWS_TEST.AUDIT_INSERT_DATE )

WHEN MATCHED THEN UPDATE SET

REVIEW_DATE = SOURCE.Review_Date
,PLATFORM = SOURCE.Platform
,PRODUCT_ID = SOURCE.Product_Id
,PRODUCT_TITLE = SOURCE.Product_Title
,RATING = SOURCE.Rating
,RATING_SCALE = SOURCE.Rating_Scale
,REVIEW_ID = SOURCE.Review_Id
,REVIEWER = SOURCE.Reviewer
,REVIEW_TEXT = SOURCE.Review_Text
,REVIEW_TITLE = SOURCE.Title
,VERIFIED_PURCHASE_INDICATOR = SOURCE.Verified_Purchase_Indicator
,AUDIT_LAST_UPDATE = SOURCE.AUDIT_INSERT_DATE


WHEN NOT MATCHED THEN INSERT
(
REVIEW_DATE
,PLATFORM
,PRODUCT_ID
,PRODUCT_TITLE
,RATING
,RATING_SCALE
,REVIEW_ID
,REVIEWER
,REVIEW_TEXT
,REVIEW_TITLE
,VERIFIED_PURCHASE_INDICATOR
, AUDIT_INSERT_DATE)
VALUES(
SOURCE.Review_Date,
SOURCE.Platform,
SOURCE."Product_ID",
SOURCE."Product_Title",
SOURCE.Rating,
SOURCE."Rating_Scale",
SOURCE."Review_ID",
SOURCE.Reviewer,
SOURCE.Review_Text,
SOURCE.Title,
SOURCE."Verified_Purchase_Indicator",
SOURCE.AUDIT_INSERT_DATE);