I have the following doubt about this simple INNER JOIN query.

I have these two tables that have to be joined togheter:

The first table is named VulnerabilityFix and contains the following columns:

Id: int identity

FixName: varchar

Vendor: varchar

Title: varchar

Version: varchar

The second table is named VulnerabilityAlertDocument_VulnerabilityFix (this bind the previous table to another table, but this is not important at this time) and contains the following columns:

VulnerabilityAlertDocumentId: int

VulnerabilityFixId: int

Now, on my DB the VulnerabilityFix table contains only an empty record (this record have an id but all the other fields are empty\null), infact if I perform a select *, I obtain:

select * from VulnerabilityFix

Id  FixName Vendor  Title   Version

1   

Into the VulnerabilityAlertDocument_VulnerabilityFix I have something like this:

select * from VulnerabilityAlertDocument_VulnerabilityFix

VulnerabilityAlertDocumentId      VulnerabilityFixId

78385                             1

78386                             1

....................................................
....................................................
....................................................
78398                             1

Ok, so I want JOIN toghert these 2 table in in such a way that passing the value of the VulnerabilityAlertDocumentId field of the VulnerabilityAlertDocument_VulnerabilityFix table, I obtain all the related record in the VulnerabilityFix table.

So in this case I aspect to retrieve the previous only record that having an id (having a value equal to 1) and all the other fields are empty\null.

So my query is:

SELECT VF.* FROM VulnerabilityAlertDocument_VulnerabilityFix VAD_VF
            INNER JOIN VulnerabilityFix VF ON VAD_VF.VulnerabilityAlertDocumentId = VF.Id
            WHERE VAD_VF.VulnerabilityAlertDocumentId = 1

The problem is that when I execute this query I obtain an empty set of records and not the unique record that I expetc to obtain.

Why? What am I missing?

Tnx

有帮助吗?

解决方案

I think your query should be more like:

SELECT VF.* FROM VulnerabilityAlertDocument_VulnerabilityFix VAD_VF
            INNER JOIN VulnerabilityFix VF ON VAD_VF.VulnerabilityFixId = VF.Id
            WHERE VAD_VF.VulnerabilityAlertDocumentId = 78385

That is, you are using the wrong column at your ON condition since VulnerabilityFixId seems to be the foreign key over VulnerabilityFix.Id and not VulnerabilityAlertDocumentId.

On the other hand, I can't see any VulnerabilityAlertDocument_VulnerabilityFix.VulnerabilityAlertDocumentId with value 1 in you data set (where condition)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top