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

आवर्ती घटनाएँ, SQL क्वेरी

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

SELECT DISTINCT(e.eventid),n.nameid,n.firstname,n.lastname,d.dt AS dait,r.recurring
FROM dates d 
LEFT JOIN recurringtypes r
/* if event recurring every week E.g. 'Every Monday' */
ON (r.rectypeid BETWEEN 2 AND 8 AND r.day = d.dow) 
/* if event recurring every month E.g. 'First Monday, every month' */
OR ((r.rectypeid BETWEEN 9 AND 36) AND r.day = d.dow AND r.occurrence = d.occurrence) 
/* if event recurring every last week of month E.g. 'Last Monday, every month' */
OR (r.rectypeid >= 37 AND r.day = d.dow and r.islast = d.islast)
LEFT JOIN events e on e.rectypeid = r.rectypeid
LEFT JOIN eventtypes t ON e.eventtypeid = t.eventtypeid
LEFT JOIN names n ON e.namesid = n.namesid
WHERE (d.dt BETWEEN '2012/02/01' AND '2012/05/01')
UNION
SELECT e.eventid,n.nameid,n.lastname,n.firstname,e.firstdate AS dait,'No' as Recurring
FROM events e
LEFT JOIN names n ON n.names = e.namesid 
AND e.rectypeid <= 1 
WHERE e.firstdate BETWEEN '2012/02/01' AND '2012/05/01' 
ORDER BY dait;

यह बताया गया है कि तिथियों को देखने के लिए तालिका का उपयोग करना एक जोखिम है क्योंकि तिथियां अंततः समाप्त हो जाएंगी, जो सच है, लेकिन यह गणना करना कि क्या कोई तिथि है, उदाहरण के लिए, एक महीने में पहला सोमवार (या दूसरा, या चौथा) या शायद चौथा और आखिरी), एसक्यूएल कोड के अधिक जटिल बिट की तरह लगता है जितना मैं इस समय प्राप्त करना चाहता हूं।



  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. डेटाग्रिडव्यू को MySQL डेटा से भरें

  3. समर्पित सर्वर पर MySQL ट्यूनिंग की मूल बातें

  4. JSP से MySQL को जोड़ना

  5. एकाधिक प्रश्नों का उपयोग करके जटिल वर्डप्रेस क्वेरी