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

सामग्री-दर-उपयोगकर्ता:एक ही नाम के कॉलम वाली दो टेबल या शामिल हों?

इस तरह की स्थिति में अक्सर उपयोग की जाने वाली अवधारणा एक उपयोगकर्ता तालिका और एक पोस्ट तालिका होती है, जो उन्हें एक अद्वितीय पहचानकर्ता के साथ जोड़ती है। यह पहचानकर्ता कुछ भी हो सकता है - एक क्रमबद्ध आईडी, एक उपयोगकर्ता नाम, मेल पता, आदि - जब तक यह अद्वितीय है। लिंकिंग एक विदेशी कुंजी बाधा का उपयोग करके किया जाता है। वास्तव में यह MySQL में कैसे प्राप्त किया जाता है, मुझे नहीं पता, लेकिन Postgres में यह इस तरह किया जाता है:

CREATE TABLE users (
  id serial PRIMARY KEY,
  name text
);

CREATE TABLE posts (
  content text,
  user_id integer REFERENCES users(id) NOT NULL
);

तालिकाओं को तब एक जुड़ाव का उपयोग करके विलय कर दिया जाता है। यह कई तरीकों से किया जा सकता है, लेकिन यहां कुछ मूल्यों को सम्मिलित करने के बाद एक क्रॉस जॉइन है:

@> INSERT INTO users (name) VALUES ('James');
@> INSERT INTO users (name) VALUES ('Jones');
@> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
@> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
@> SELECT U.id AS user_id, U.name, P.content \
   FROM users U, posts P \
   WHERE U.id = P.user_id;

 user_id | name  |        content
---------+-------+-----------------------
       1 | James | Hello from James.
       2 | Jones | Greetings from Jones.

MySQL में YMMV, लेकिन मुझे लगता है कि ऊपर के निर्माण सीधे काम करेंगे।

(संपादित करें:स्पष्टीकरण के लिए जोड़ा गया INSERTs)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कुछ पंक्तियों का उप-योग प्राप्त करने के लिए SQL क्वेरी

  2. जहां सब कुछ नहीं है

  3. डेटाबेस रिकॉर्ड को फ़िल्टर करने के लिए वैकल्पिक कॉलम

  4. MySQL के साथ, मैं किसी तालिका में रिकॉर्ड अनुक्रमणिका वाला स्तंभ कैसे उत्पन्न कर सकता हूं?

  5. कैसे एक mysql परिणाम सेट के माध्यम से लूप करने के लिए?