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

रिलेशनल बीजगणित को संबंधित SQL क्वेरी में परिवर्तित करना

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

टेबल्स पहले:

अपने जुड़ने का पता लगाकर शुरुआत करें। आप जानते हैं कि आपके पास आपके तीन सेट (टेबल) हैं Guest , Reservation , और Room , साथ के तीनों स्वाभाविक रूप से जुड़े हुए हैं (आंतरिक जुड़े हुए)। तो आप इस तरह से अपनी क्वेरी लिखना शुरू कर सकते हैं:

SELECT *
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_;

एक बार यह पूरा हो जाने पर, अपनी शर्तें लागू करें:

SELECT *
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_
WHERE g.age < 20;

वैकल्पिक रूप से आप g.age . के लिए शर्त रख सकते हैं Reservation में शामिल होने के लिए , लेकिन शर्तों को WHERE . में रखने की अनुशंसा की जाती है INNER JOIN . के लिए क्लॉज ।

अंत में, आप अपना SELECT भरते हैं :

SELECT g._guestId_,
    res._roomId_,
    r.price
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_
WHERE g.age < 20;

संचालन का क्रम

इसके लिए आप ऑर्डर ऑफ ऑपरेशंस का उपयोग करके अपनी क्वेरी लिखें। तो एक कोष्ठक के अंदर सब कुछ पहले क्रियान्वित हो जाता है। इसे इस तरह से करते हुए, आप Guest . के विरुद्ध क्वेरी लिखकर प्रारंभ करते हैं :

SELECT g._guestId_
FROM Guest g
WHERE g.age < 20;

अगला सेट होगा Reservation , और वह स्वाभाविक रूप से जुड़ गया है:

SELECT g._guestId_,
    res._roomId_
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_;

अंत में, आप Room में आएं सेट, फिर से स्वाभाविक रूप से शामिल हो गए:

SELECT g._guestId_,
    res._roomId_,
    r.price
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_
WHERE g.age < 20;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पूरी वेबसाइट के लिए लॉगिन के रूप में vBulletin (संपादित करें:प्रगति की एक निश्चित राशि की गई है)

  2. मैं mysql में आयातित स्प्रैडशीट का डेटाटाइप कैसे बदलूं?

  3. स्तंभ मानों के आधार पर पांडा डेटाफ़्रेम में शामिल हों

  4. MySQL अगला/पिछला आईडी (मनमाना क्रम क्रम)

  5. मैं कैसे देख सकता हूं कि MySQL डेटाबेस/टेबल/कॉलम कौन सा वर्ण सेट करता है?