I have the following table which you can also find in the SQL fiddle
here:
CREATE TABLE Products ( Eventtype TEXT, CampaignID TEXT, Product TEXT, Quantity VARCHAR(255) ); INSERT INTO Products (Eventtype, CampaignID, Product, Quantity) VALUES ("Event_01", "9857", NULL, "500"), ("Event_01", "5504", NULL, "670"), ("Event_01", "4589", NULL, "950"), ("Event_01", "77801", NULL, "750"), ("Event_02", "9857", "Product A", "300"), ("Event_03", "9857", "Product A", "250"), ("Event_02", "77801", "Product A", "350"), ("Event_03", "77801", "Product A", "150"), ("Event_02", "5504", "Product B", "270"), ("Event_03", "5504", "Product B", "850"), ("Event_02", "4589", "Product B", "420"), ("Event_03", "4589", "Product B", "630");
I use the following query:
Select Eventtype, CampaignID, Product, Quantity FROM Products WHERE Product = "Product B";
All this works fine so far.
Event_01
only has a CampaignID
.
Event_02
and Event_03
have a CampaignID
and Products
.
Now I want that if I select Product B
in the query the corresponding values on CampaignID
level for Event_01
are inserted into the results.
Basically, Event_02
and Event_03
should be used to identify that Product B
is connected to a certain CampaignID
and then the quantity
for this CampaignID
in Event_01
is displayed:
The desired result should look like this:
Eventtype CampaignID Product Quantity Event_01 4589 NULL 950 Event_01 5504 NULL 670 Event_02 4589 Product B 420 Event_02 5504 Product B 270 Event_03 4589 Product B 630 Event_04 5504 Product B 850
How do I have to modify my query to achieve this result?
Advertisement
Answer
With reference to this this question the solution is:
SELECT Eventtype, CampaignID, Product, Quantity FROM Products WHERE CampaignID IN (Select CampaignID FROM Products WHERE Product = "Product B") GROUP BY 1,2;