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

MySQL कई-से-अनेक विदेशी कुंजी के साथ संबंध

आपको Films_Genres . में कुछ भी दिखाई नहीं देगा तालिका जब तक आप उसमें स्पष्ट रूप से कुछ सम्मिलित नहीं करते हैं। पीके और एफके के माध्यम से रेफरेंशियल अखंडता आपके लिए आपकी टेबल को पॉप्युलेट करने के लिए नहीं है।

Films_Genres . में एक नया रिकॉर्ड डालने के लिए आपका MySql कोड , अगर यह एक नई फिल्म है जो एक नई शैली के अनुरूप है, तो ऐसा लग सकता है

INSERT INTO Films (Title) VALUES ('Title1');
SET @film_id = LAST_INSERT_ID();

INSERT INTO Genres (Name) VALUES ('Genre1');
SET @genre_id = LAST_INSERT_ID();

INSERT INTO Films_Genres (film_id, genre_id) VALUES(@film_id, @genre_id);

php साइड पर ऑटोइन्क्रिमेंटेड फ़ील्ड के लिए एक नई असाइन की गई आईडी प्राप्त करने के लिए का उपयोग करें। $mysqli->insert_id .

अब यदि आप एक नई फिल्म बनाना चाहते हैं और इसे एक साथ कई शैलियों में असाइन करना चाहते हैं तो आप कर सकते हैं

INSERT INTO Films (Title) VALUES ('Title2');
SET @film_id = LAST_INSERT_ID();
-- if you get ids of genre from your UI just use them
INSERT INTO Films_Genres (film_id, genre_id) 
SELECT @film_id, id
  FROM Genres
 WHERE id IN (2, 3, 4);

INSERT INTO Films (Title) VALUES ('Title3');
SET @film_id = LAST_INSERT_ID();
-- if you names of genres you can use them too
INSERT INTO Films_Genres (film_id, genre_id) 
SELECT @film_id, id
  FROM Genres
 WHERE Name IN ('Genre2', 'Genre4');

यह रहा SQLFiddle डेमो



  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 डेटाबेस में गैर-अंग्रेज़ी पाठ सम्मिलित करते समय JSP एन्कोडिंग

  2. MySQL पर NoSQL डेटाबेस का उपयोग करना

  3. SQL स्प्लिट कॉमा सेपरेटेड रो

  4. PHP स्क्रिप्ट में जेनेरिक किल्ड एरर

  5. MySQL में पिवट टेबल कैसे बनाएं