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

2 चुनिंदा प्रश्नों का मेल

इसके रूप में, आप एक आउटपुट बनाना चाहते हैं जो किसी स्टेशन से सिटी स्क्वायर तक जाने वाले 5 ट्राम और सिटी स्क्वायर से किसी अन्य स्टेशन पर जाने वाले 5 ट्राम को सूचीबद्ध करता है। इस मामले में - आप इन दो चीजों के बीच कोई संबंध नहीं बना रहे हैं (उदाहरण के लिए, समय पर) - आपको एक छद्म कॉलम में शामिल होना चाहिए, row_number() OVER () दिमाग में आता है:

SELECT '$name' AS name1, w1.time1, 'City Square - arrival' AS name2, w1.time2,
       'City Square - departure' AS name3, w2.time3, '$name2' AS name4, w2.time4
FROM (
  SELECT dt1.time AS time1, dt2.time AS time2, row_number() OVER () AS rn
  FROM departure_times AS dt1
  JOIN departure_times AS dt2 USING (tram_id)
  WHERE dt1.name = '$name' AND dt2.name = 'CitySquare'
  LIMIT 5) w1
JOIN (
  SELECT dt1.time AS time3, dt2.time AS time4, row_number() OVER () AS rn
  FROM departure_times AS dt1
  JOIN departure_times AS dt2 USING (tram_id)
  WHERE dt1.name = 'CitySquare' AND dt2.name = '$name2'
  LIMIT 5) w2 USING (rn);

प्रत्येक उप-प्रश्नों में आप रुचि की पांच पंक्तियों का चयन करते हैं। चूंकि कोई स्पष्ट संपत्ति नहीं है, आप जॉइन . कर सकते हैं पंक्तियों के इन दो सेटों पर, आपको कुछ छद्म-स्तंभ बनाने होंगे जो उस उद्देश्य की पूर्ति कर सकें (आपको इसमें शामिल होने के लिए कुछ चाहिए या आपको एक CROSS JOIN मिलेगा। जिसके परिणामस्वरूप आउटपुट में 5 x 5 पंक्तियाँ होती हैं)। row_number() OVER () AS rn बस यही करता है:यह उपनाम के साथ एक नया कॉलम बनाता है rn जिसमें पूरे पंक्ति सेट पर पंक्ति संख्या होती है (OVER () , 5 पंक्तियों के कारण LIMIT खंड)। आप इसे दोनों उप-प्रश्नों में करते हैं ताकि आप इसे शामिल होने की स्थिति के रूप में उपयोग कर सकें:USING (rn) . आपको आउटपुट में इस कॉलम का उपयोग करने की आवश्यकता नहीं है।

आपका इस पर कोई नियंत्रण नहीं है कि कौन से 5 ट्राम बार सूचीबद्ध होंगे। अगर आप ऐसा चाहते हैं, तो आपको कुछ ऐसा करना चाहिए जैसे WHERE dt1> CURRENT_TIME और dt1 द्वारा ऑर्डर करें दोनों उप-प्रश्नों में, या उस पंक्ति के साथ कुछ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में समय को सेकंड में बदलें

  2. PostgreSQL रिकॉर्ड के माध्यम से पुनरावृति। अगली पंक्ति से डेटा का संदर्भ कैसे लें?

  3. PostgreSQL लॉग विश्लेषण pgBadger के साथ

  4. विंडोज के लिए पोस्टग्रेएसक्यूएल विकसित करना, भाग 3

  5. Postgresql इंटररे त्रुटि:अपरिभाषित प्रतीक:pfree