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

एसक्यूएल टेबल में शामिल हों जहां 1 कॉलम में अल्पविराम है

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

select *  
from  tblC c
JOIN tblB b
ON (find_in_set(b.userid,c.userids) > 0)
where c.nname="new1"

डेमो देखें

स्कीमा को सामान्य करने के लिए संपादित करें

मैंने userids हटा दिया है आपके tblC . से कॉलम और इसके बजाय मैंने tblC_user . के रूप में एक नई जंक्शन तालिका बनाई है 2 कॉलम के साथ c_id यह tblC . के आईडी कॉलम से संबंधित होगा और दूसरा userid उपयोगकर्ता संबंध उपयोगकर्ताओं को tblC . के लिए संग्रहीत करने के लिए tblC . के लिए नमूना स्कीमा देखें

CREATE TABLE if not exists tblC
(
id int(11) NOT NULL auto_increment ,
nname varchar(255),
 PRIMARY KEY (id)
);

INSERT INTO tblC (id, nname) VALUES
('1', 'new1'),
('2', 'new2'),
('3', 'new3'),
('4', 'new4'),
('5', 'new5');

और यहां आपकी जंक्शन तालिका tblC_user . के रूप में है

CREATE TABLE if not exists tblC_user
(
 c_id int,
 userid int
);

INSERT INTO tblC_user (c_id,userid) VALUES
('1','1'),
('1','2'),
('2','1'),
('2','3'),
('3','1'),
('3','4'),
('4','3'),
('4','2'),
('5','5'),
('5','2');

उपरोक्त में यदि आप देखते हैं कि मैंने tblC के लिए उपयोगकर्ता के प्रत्येक संबंध को अल्पविराम से अलग किए गए संबंधों को संग्रहीत नहीं किया है नई पंक्ति में संग्रहीत है, आपके लिए संबंधित परिणाम सेट में मैंने शामिल होने में जंक्शन तालिका का उपयोग किया है, नई क्वेरी नीचे की तरह होगी

select *  
from  tblC c
join tblC_user cu on(c.id = cu.c_id)
join tblB b on (b.userid = cu.userid)
where c.nname="new1"

डेमो 2

अब उपरोक्त क्वेरी को इंडेक्स का उपयोग करके अनुकूलित किया जा सकता है जिससे आप आसानी से कैस्केडिंग संबंध बनाए रख सकते हैं




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सिंक से बाहर आदेश; Mysql में संग्रहीत कार्यविधि को कॉल करते समय आप इस आदेश को अभी नहीं चला सकते हैं

  2. MyISAM तालिकाओं के साथ InnoDB तालिकाओं में शामिल होना

  3. क्या मैं MySQL के बाहर किसी भी प्रोग्राम को mysql ट्रिगर्स के माध्यम से निष्पादित कर सकता हूं?

  4. गलत परिणाम दिखाकर नाम क्रम से ग्रुप करें

  5. SQL बनाने तालिका में सिंटेक्स त्रुटि