ऐसे दो तरीके हैं जिनसे आप इसे देख सकते हैं। पहला विकल्प आसान हो सकता है यदि आप डेटाबेस से अधिक परिचित हैं तो संबंधपरक बीजगणित, जबकि दूसरा आसान होगा (और अधिक जटिल समस्याओं के लिए अधिक सटीक) यदि आप संबंधपरक बीजगणित से परिचित हैं।
टेबल्स पहले:
अपने जुड़ने का पता लगाकर शुरुआत करें। आप जानते हैं कि आपके पास आपके तीन सेट (टेबल) हैं 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;