मेरे पास तीन टेबल हैं, पहला उत्पादों के बारे में, दूसरा लेखकों के बारे में और तीसरी तालिका दर्शाती है कि कौन सा उत्पाद किस लेखक से संबंधित है। मेरे पास तीन टेबल होने का कारण यह है कि एक उत्पाद में एक से अधिक लेखक हो सकते हैं।

product : 
id  |   name   |   price

user :
id   |   name   

user_product :
product_id   |   user_id

अब मैं एक दृश्य बनाना चाहता हूं जिसमें उत्पाद तालिका से आईडी, नाम और मूल्य और उपयोगकर्ता तालिका से "नाम" शामिल है, ताकि यदि एक से अधिक लेखक हैं, तो उनके नाम अल्पविराम से अलग हो जाते हैं।

view_product :
id   |   product_id   |   product_name   |   product_price   |   user_name

अगर कोई इस प्रश्न को लिखने में मेरी मदद कर सकता है तो मैं इसकी बहुत सराहना करूंगा।

0
Mehdi Shah abbasian 2 पद 2020, 19:51

1 उत्तर

सबसे बढ़िया उत्तर

एक विकल्प सहसंबद्ध सबक्वेरी और स्ट्रिंग एग्रीगेशन फ़ंक्शन group_concat() का उपयोग करता है:

create view myview as
select p.id as product_id, p.name as product_name, p.price as product_price,
    (
        select group_concat(u.name)
        from user_product up
        inner join user u on u.id = up.user_id
        where up.product_id = p.id
    ) as user_names
from product p

आप भी शामिल हो सकते हैं और एकत्र कर सकते हैं:

create view myview as
select p.id as product_id, p.name as product_name, p.price as product_price,
    group_concat(u.name) as user_names
from product p
left join user_product up on up.product_id = p.id
left join user u on u.id = up.user_id
group by p.id
0
GMB 2 पद 2020, 17:42