2013-08-30 5 views
19

साथ जुड़ जाता है दो तालिकाओं के बीच में शामिल होनेकई चालाक

(for { 
    (computer, company) <- Computers leftJoin Companies on (_.companyId === _.id) 
    if computer.name.toLowerCase like filter.toLowerCase() 
    } 

की तरह लेकिन मामले में किया जाता है, तो अधिक तालिकाओं के बीच आवश्यक शामिल होने के ठीक नीचे की कोशिश कर रहा तरह से काम नहीं करता है, लेकिन

(for { 
    (computer, company,suppliers) <- Computers leftJoin Companies on (_.companyId ===  _.id) 
    //not right leftjoin Suppliers on (_.suppId === _.id) 
    if computer.name.toLowerCase like filter.toLowerCase() 
    } 
+0

कंप्यूटर आपूर्तिकर्ता – dsr301

उत्तर

28

पहला है क्या के लिए एक प्रश्न वापसी टुपल्स में परिणाम में शामिल हों। टुपल घटकों में से एक में विदेशी कुंजी है जिसे आप दूसरे शामिल होने के लिए उपयोग करना चाहते हैं। अपने क्षेत्र को प्राप्त करने से पहले आपको इस घटक को दूसरी जुड़ने की स्थिति में प्राप्त करने की आवश्यकता है। अगर कंपनियों तालिका है, उस क्षेत्र suppId यह इस प्रकार दिखाई देगा है:

(for { 
    ((computer, company),suppliers) <- Computers leftJoin Companies on (_.companyId === _.id) leftJoin Suppliers on (_._2.suppId === _.id) 
    if computer.name.toLowerCase like filter.toLowerCase() 
} yield ...) 
+0

से जुड़ा हुआ है यहां बाईं ओर जोइन सप्लायर (_._ 2.suppId === _.id) यह पहले ट्यूपल पर शामिल है? यदि कंप्यूटर और आपूर्तिकर्ताओं के बीच शामिल होना चाहते हैं तो मैं बाएं जोइन सप्लायर (_._ 1.suppId === _.id) पर कोशिश कर रहा हूं लेकिन यह – dsr301

+0

विफल रहता है यह काम करता है, लेकिन मुझे लगता है कि जुड़ने के साथ पूर्ण क्वेरी में होना चाहिए एक पंक्ति, अन्यथा इसकी संकलन त्रुटियों को दिखाता है – dsr301

+0

ने एक पंक्ति – cvogt

5

मुझे लगता है कि आप इस हैं:

for { 
    (computer, company) <- Computers leftJoin Companies on (_.companyId === _.id) 
    (supp, _) <- company innerJoin Suppliers on (_.suppId === _.id) 
    if computer.name.toLowerCase like filter.toLowerCase() 
} yield (computer, company, supp) 
बेशक

, मैं अपने मॉडल के बारे में मान्यताओं बनाने रहा हूँ। सुनिश्चित नहीं है कि आपूर्तिकर्ताओं कंपनियों या कंप्यूटर से जुड़े हुए हैं।

+2

में जवाब बदल दिया है, मुझे लगता है कि दूसरा शामिल "समझ" समझ में एक अलग पंक्ति है। –

+0

कंपनी यहां आंतरिक कैसे शामिल होती है? यह एक मॉडल प्रकार है? (लूप के लिए दूसरी पंक्ति) – Setheron

+0

'कंपनी' पिछली पंक्ति में परिभाषित एक है। – pedrofurla

संबंधित मुद्दे