मेरे पास 3 टेबल हैं (ग्राहक, ग्राहक आईडी पीके है) (सेवाएं, सर्विस आईडी पीके है) (उपकरण, समान पीके है)। दूसरी दो तालिकाओं की लागत उनके साथ जुड़ी हुई है। सभी 3 टेबल व्यक्तिगत रूप से एक टेबल से जुड़ते हैं (बिलिंग, ट्रांसआईडी पीके है)। एक अन्य प्रक्रिया प्रत्येक ग्राहक के लिए लेनदेन करती है जो उनसे व्यक्तिगत रूप से उनकी सेवाओं के लिए शुल्क लेता है। मैं एक क्वेरी उत्पन्न करना चाहता हूं जो संबंधित उपकरणों और सेवाओं के लिए सभी लेनदेन और लागतों को खींचती है। जब मैंने cus-> बिलिंग-> सेवा-> बिलिंग-> लैस में शामिल होने का प्रयास किया तो यह कुछ अजीबता का कारण बनता है। क्या किसी को ऐसा करने का बेहतर तरीका पता है?

Select * from Customer as c 
inner join Billing as b on c.customerID=b.customerID
inner join Service as s on b.ServID=s.ServID
inner join Billing on s.ServID=b.ServID
inner join Equipment as e on b.EquID=e.EquID AND b.Serial=e.Serial
where c.customerID=1
sql
0
Dane Looman 4 पद 2017, 02:56

2 जवाब

सबसे बढ़िया उत्तर

मैंने इसे दोस्तों और टिप्पणियों की कुछ मदद से काम किया। अंतिम कोड नीचे है।

Select * from Customer as c 
inner join Billing as b on c.customerID=b.customerID
left join Service as s on b.ServID=s.ServID
left join Equipment as e on b.EquID=e.EquID AND b.Serial=e.Serial
where c.customerID=1
0
Dane Looman 4 पद 2017, 05:13

यद्यपि आप दो बार बिलिंग तालिका में शामिल हुए हैं, आपने दूसरी तालिका का उपयोग नहीं किया है। मुझे लगता है कि आप क्वेरी से निम्नलिखित को हटा सकते हैं।

inner join Billing on s.ServID=b.ServID --(4th line  of  the  query) 
1
Adikari Nadeesha 4 पद 2017, 05:37