Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQL क्वेरी या Laravel SQL क्वेरी बिल्डर का उपयोग करके तालिका/स्तंभ संयोजन बनाना

यह करना चाहिए। Mysql 5.7 में काम नहीं करेगा क्योंकि पुनरावर्ती CTE को बाद में शामिल नहीं किया गया था, लेकिन यह आपको प्रति group_id विशेषताएँ और विशेषता_मानों की एक चर संख्या रखने की अनुमति देगा। बेला यहां है ।

with recursive allAtts as (
  /* Get our attribute list, and format it if we want; concat(a.title, ':', v.title) looks quite nice */
  SELECT 
    att.group_id,
    att.id,
    CONCAT(v.title) as attDesc,
    dense_rank() over (partition by att.group_id order by att.id) as attRank
FROM table_attributes att 
INNER JOIN table_attribute_values v 
    ON v.group_id = att.group_id 
    AND v.attribute_id = att.id 
 ),
 cte as (
 /* Recursively build our attribute list, assuming ranks are sequential and we properly linked our group_ids */
    select group_id, id, attDesc, attRank from allAtts WHERE attRank = 1
   
         union all 
   
    select 
        allAtts.group_id, 
        allAtts.id, 
        concat_ws('-', cte.attDesc, allAtts.attDesc) as attDesc,
        allAtts.attRank
   from cte 
   join allAtts ON allAtts.attRank = cte.attRank +1
      AND cte.group_id = allAtts.group_id
)
   
/* Our actual select statement, which RIGHT JOINs against the table_groups 
   so we don't lose entries w/o attributes */   
select 
    grp.id,
    concat_ws('-', d.day, qty.quantity, cte.attDesc) as combinations
from cte 
inner join (select group_id, max(attRank) as attID
            from cte
            group by group_id) m on cte.group_id = m.group_id and m.attID = cte.attrank
RIGHT JOIN table_groups grp ON grp.id = cte.group_id 
LEFT JOIN table_days d on grp.id = d.group_id
LEFT JOIN table_quantities qty on grp.id = qty.group_id;
            
            



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल जॉइन:बस उन्हें समझने में सक्षम नहीं है

  2. एसक्यूएल:पंक्तियों को ढूंढें और मिलान करने वाले कॉलम की संख्या के अनुसार क्रमबद्ध करें?

  3. 2 अलग-अलग तालिकाओं से उपयोगकर्ता या व्यवस्थापक के रूप में लॉग इन करना

  4. निर्दिष्ट कुंजी बहुत लंबी थी; एंटिटी फ्रेमवर्क 6 में अधिकतम कुंजी लंबाई 767 बाइट्स माइस्क्ल त्रुटि है

  5. MySQL - डुप्लीकेट टेबल