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

श्रेणियों और उसके माता-पिता को पुनर्प्राप्त करने वाली क्वेरी में श्रेणियों के साथ संघ दो टेबल

सबसे पहले, MySQL का आपका संस्करण (MariaDB 10.3) सामान्य तालिका अभिव्यक्तियों का समर्थन करता है, इसलिए आपके पास अपने प्रश्नों में परिवर्तनशील चर के उपयोग से बचने का एक तरीका है। क्वेरी में परिवर्तनशील चर श्रेणीबद्ध क्वेरी निष्पादित करने का एक तरीका रहा है। सामान्य तालिका अभिव्यक्तियों का समर्थन करने से पहले, लेकिन यह एक ऐसी रणनीति है जिसे बहिष्कृत कर दिया गया है और जिसके लिए कोई दस्तावेजी गारंटी नहीं है कि यह हमेशा इरादा के अनुसार काम करेगा।

तो यहां एक सामान्य तालिका अभिव्यक्ति (सीटीई) के साथ ऐसा करने की क्वेरी है, जहां 8 उदाहरण मान है (इसे PHP अभिव्यक्ति से बदलें):

with recursive 
cte as (
    select 1 as categoryDepth,
           c.* 
    from   tbl_categories c
    where  categoryId = 8
    union
    select cte.categoryDepth + 1, 
           c.*
    from   cte
    inner join tbl_categories c
            on c.categoryId = cte.categoryParentId
)
select   * 
from     cte
order by categoryDepth desc;

और अब, जब आपके पास यह दूसरी तालिका है, तो आप पहले संघ को परिभाषित करने के लिए एक सामान्य तालिका अभिव्यक्ति कर सकते हैं, और फिर ऊपर के रूप में जारी रख सकते हैं:

with recursive 
base as (
    select * from tbl_categories
    union
    select * from tbl_categories_custom
),
cte as (
    select 1 as categoryDepth,
           base.* 
    from   base
    where  categoryId = 8
    union
    select cte.categoryDepth + 1, 
           base.*
    from   cte
    inner join base
            on base.categoryId = cte.categoryParentId
)
select   *
from     cte
order by categoryDepth desc;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. खेल स्केल में जादू के साथ ColumnNotFound समस्या

  2. दो कॉलम द्वारा MySQL ऑर्डर

  3. MySQL में माइक्रोसेकंड संग्रहीत करना:कौन सा समाधान?

  4. ज़ेंड फ्रेमवर्क 3 टेबल में शामिल हों

  5. मॉडल से अग्रेषित इंजीनियरिंग के बाद मैं स्वचालित रूप से एक MySQL स्क्रिप्ट या दिनचर्या कैसे निष्पादित करूं?