-- Database schema
| Addresses : Address_ID [ INT ] primary_key , address_details [ TEXT ] | Locations : Location_ID [ INT ] primary_key , Other_Details [ TEXT ] | Products : Product_ID [ INT ] primary_key , Product_Type_Code [ TEXT ] , Product_Name [ TEXT ] , Product_Price [ INT ] | Parties : Party_ID [ INT ] primary_key , Party_Details [ TEXT ] | Assets : Asset_ID [ INT ] primary_key , Other_Details [ TEXT ] | Channels : Channel_ID [ INT ] primary_key , Other_Details [ TEXT ] | Finances : Finance_ID [ INT ] primary_key , Other_Details [ TEXT ] | Events : Event_ID [ INT ] primary_key , Address_ID [ INT ] Events.Address_ID = Addresses.Address_ID , Channel_ID [ INT ] , Event_Type_Code [ TEXT ] , Finance_ID [ INT ] Events.Finance_ID = Finances.Finance_ID , Location_ID [ INT ] Events.Location_ID = Locations.Location_ID | Products_in_Events : Product_in_Event_ID [ INT ] primary_key , Event_ID [ INT ] Products_in_Events.Event_ID = Events.Event_ID , Product_ID [ INT ] Products_in_Events.Product_ID = Products.Product_ID | Parties_in_Events : Party_ID [ INT ] primary_key Parties_in_Events.Party_ID = Parties.Party_ID , Event_ID [ INT ] Parties_in_Events.Event_ID = Events.Event_ID , Role_Code [ TEXT ] | Agreements : Document_ID [ INT ] primary_key , Event_ID [ INT ] Agreements.Event_ID = Events.Event_ID | Assets_in_Events : Asset_ID [ INT ] primary_key , Event_ID [ INT ] Assets_in_Events.Event_ID = Events.Event_ID |
-- -- Show the names of products that are in at least two events in ascending alphabetical order of product name.

SELECT T1.Product_Name FROM Products AS T1 JOIN Products_in_Events AS T2 ON T1.Product_ID  =  T2.Product_ID GROUP BY T1.Product_Name HAVING COUNT(*)  >=  2 ORDER BY T1.Product_Name;