आसानी से नहीं क्योंकि आपके पास अन्य पंक्तियों की तुलना में अंतिम पंक्ति में अलग-अलग संख्या में मेल खाने वाले उत्पाद हैं। आप इसे किसी प्रकार के GROUP_CONCAT() ऑपरेटर (MySQL में उपलब्ध; अन्य DBMS में लागू करने योग्य, जैसे Informix और शायद PostgreSQL) के साथ करने में सक्षम हो सकते हैं, लेकिन मुझे इस पर विश्वास नहीं है।
जोड़ी के अनुसार मिलान
SELECT p1.product_name AS name1, p2.product_name AS name2, COUNT(*)
FROM (SELECT p.product_name, h.transaction_id
FROM products AS p
JOIN transactions_has_products AS h ON h.product_id = p.product_id
) AS p1
JOIN (SELECT p.product_name, h.transaction_id
FROM products AS p
JOIN transactions_has_products AS h ON h.product_id = p.product_id
) AS p2
ON p1.transaction_id = p2.transaction_id
AND p1.product_name < p2.product_name
GROUP BY p1.name, p2.name;
ट्रिपल मैच को संभालना गैर-तुच्छ है; इसे इससे आगे बढ़ाना निश्चित रूप से कठिन है।