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

टिप्पणियों और टिप्पणियों के उत्तरों के लिए mysql संरचना

यदि आप चाहते हैं कि लोग उत्तरों का उत्तर दे सकें (अर्थात उत्तरों का एक पदानुक्रम है जैसे कि आप एक ऑनलाइन संदेश फ़ोरम में देखेंगे), तो मैं टिप्पणी तालिका में एक वैकल्पिक parent_comment_id फ़ील्ड जोड़ूंगा।

आपकी टेबल कुछ इस तरह दिखेगी

`CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `parent_comment_id` int(12) NULL,
  `comment` text,
  `user_id` int(12) DEFAULT NULL,
  `topic_id` int(12) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `topic_id` (`topic_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;`

सभी टिप्पणियों और उत्तरों को दर्शाने वाली आपकी क्वेरी कुछ इस प्रकार होगी:

SELECT c.id, c.comment, r.comment as reply, c.user_id, u.username, u.photo
FROM (comments c)
JOIN users u ON c.user_id = u.id
LEFT JOIN comments r ON c.id = r.parent_comment_id
WHERE c.topic_id = 9

ध्यान दें कि इस प्रश्न के साथ आपके उत्तर न केवल 'उत्तर' कॉलम में, बल्कि 'टिप्पणी' कॉलम में भी अतिरिक्त पंक्तियों के रूप में शून्य या अधिक उत्तरों के साथ दिखाई देंगे।

किसी टिप्पणी का उत्तर देने वाले उपयोगकर्ताओं का उपयोगकर्ता नाम दिखाने के लिए, आपको उपयोगकर्ता तालिका में दो बार शामिल होना होगा (पहले मूल टिप्पणी पोस्ट करने वाले उपयोगकर्ता के लिए, और फिर उत्तर देने वाले उपयोगकर्ता के लिए)। उत्तर देने वाले उपयोगकर्ताओं के उपयोगकर्ता नाम दिखाने के लिए इस क्वेरी का प्रयास करें:

SELECT c.id, c.comment, c.user_id, u.username, u.photo, r.comment as reply, r.user_id as reply_user_id, 
u2.username as reply_username, u2.photo as reply_photo
FROM (comment c)
JOIN users u ON c.user_id = u.id
LEFT JOIN comments r ON c.id = r.parent_comment_id
JOIN users u2 ON r.user_id = u2.id
WHERE c.topic_id = 9


  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. MySQL दिनांक स्वरूप DD/MM/YYYY क्वेरी का चयन करें?

  3. MySQL में महीने और साल के हिसाब से ग्रुप करें

  4. लॉक टेबल का पता लगाना (लॉक टेबल द्वारा लॉक किया गया)

  5. गतिशील धुरी MySQL