Burzhuin
asked on
SQL query question
I ran across a problem I cannot figure out how to solve. I have to consolidate data from 4 temporary tables to one permanent. I am using INNER JOIN for three temp tables and LEFT OUTER JOIN for fourth one. The problem is in data. Some records have duplicate IDs. So when I perform INSERT INTO instead of two records in perm table I got four. This happened so far twice but there is no guarantee that it would not happen again. Any suggestions how to solve it?
Without sample data and expected result I would be guessing my way through an answer to this broad question.
Maybe Jim has guessed right?
Maybe Jim has guessed right?
Sample data and table schemas are needed to we can provide a better solution.
ASKER
My apologies for being not clear. I have four tables. Each tables have only one column common: ProductID. Each temp table contains only part of data (usually 6 columns) that should contain Perm table. The all tables belong to the same schema. My Insert query looks somewhat like this:
INSERT INTO PermTable (ProductID, value1, value2, value3, value4) SELECT t1.ProductID, t1.Value1, t2.Value2, t3.Value3, t4.Value4 FROM Temp1 t1 INNER JOIN Temp2 t2 ON t1.ProductID = t2.ProductID INNER JOIN Temp3 t3 ON t1.ProductID = t3.ProductID LEFT OUTER JOIN Temp4 t4 ON t1.ProductID = t4.ProductID
It works when ProductID is unique but if there is 2 records with the same ProductID in Temp Tables I will get four records in Perm table.
INSERT INTO PermTable (ProductID, value1, value2, value3, value4) SELECT t1.ProductID, t1.Value1, t2.Value2, t3.Value3, t4.Value4 FROM Temp1 t1 INNER JOIN Temp2 t2 ON t1.ProductID = t2.ProductID INNER JOIN Temp3 t3 ON t1.ProductID = t3.ProductID LEFT OUTER JOIN Temp4 t4 ON t1.ProductID = t4.ProductID
It works when ProductID is unique but if there is 2 records with the same ProductID in Temp Tables I will get four records in Perm table.
If the is a repeated product id in one of the temp tables, what is supposed to happen?
for example, let's say it is
table2
productid value2
12345 12345.6
12345 23456.7
i.e. if there is a difference in value2 (as shown) what would you expect to happen?
for example, let's say it is
table2
productid value2
12345 12345.6
12345 23456.7
i.e. if there is a difference in value2 (as shown) what would you expect to happen?
I wanted to ask a similar question;
- What's a duplicate record? Rows with same ProductID and Value? Or only same ProductID?
- If it's only same ProductID, which value need to be selected? MIN? MAX? AVG? Other?
- What's a duplicate record? Rows with same ProductID and Value? Or only same ProductID?
- If it's only same ProductID, which value need to be selected? MIN? MAX? AVG? Other?
ASKER
In my cases I have two records with the same ProductID in Temp1, Temp2 tables. One record in Temp3 and none in Temp4. When I executed my query it inserted into Perm table not two but four records. So Perm table looks like that:
Perm
productid value2
12345 12345.6
12345 23456.7
12345 12345.6
12345 23456.7
Perm
productid value2
12345 12345.6
12345 23456.7
12345 12345.6
12345 23456.7
As been asked above:
i.e. if there is a difference in value2 (as shown) what would you expect to happen?
- If it's only same ProductID, which value need to be selected?
ASKER
I need both values. But I need TWO records which is correct NOT FOUR records I am getting that is wrong.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I tried it but I got only one record but I have to get two.
Please provide samples for the 4 tables.
and the expected result.
This truly is the fastest way to resolution.
and the expected result.
This truly is the fastest way to resolution.
Open in new window