कैसे वापस करने के लिए एक से अधिक पंक्ति से सबक्वेरी के रूप में इस्तेमाल किया अभिव्यक्ति

0

सवाल

select case 
         when p.property_type ='APARTMENT_COMMUNITY' 
           then (select fp.bedroom_count 
                 from floor_plans fp 
                 where fp.removed = false 
                 and fp.property_id=p.id) 
         else (select pu.bedroom_count 
               from property_units pu 
               where pu.removed = false 
               and pu.property_id=p.id) 
        end 
from properties p 
where p.id =550

मैं यह है,bedroom_count नहीं है एक एकल पंक्ति है,तो यह इस त्रुटि देता है

त्रुटि: एक से अधिक पंक्ति एक से लौटा सबक्वेरी के रूप में इस्तेमाल एक अभिव्यक्ति

मैं पाने के लिए की जरूरत है कि में परिणाम है कि मामला है, वहाँ है किसी भी अन्य समाधान के लिए यह?

postgresql sql
2021-11-24 06:24:39
3
0

त्रुटि तथ्य से आता है कि या तो पहली या दूसरी सबक्वेरी वापसी की तुलना में अधिक 1 पंक्ति के लिए दिया property_id (550). अपनी टिप्पणी से

मैं करना चाहते हैं उन सभी के परिणाम के रूप में

मैं अनुमान लगा रहा हूँ कि आप की जरूरत है क्या छोड़ दिया है में शामिल होने के साथ दोनों तालिकाओं. इस कोशिश

select p.property_type, coalesce(fp.bedroom_count, pu.bedroom_count) as bedroom_count
  from properties p
  left join floor_plans fp 
    on p.property_type = 'APARTMENT_COMMUNITY' and fp.removed = false and fp.property_id = p.id
  left join property_units pu
    on p.property_type <> 'APARTMENT_COMMUNITY' and pu.removed = false and pu.property_id = p.id
 where p.id = 550
2021-11-24 06:50:23
0

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

select p.*, coalesce(fp.bedroom_count, pu.bedroom_count) as bedroom_count
from properties p
left join floor_plans fp on p.property_type = 'APARTMENT_COMMUNITY' 
                         and fp.property_id = p.id
                         and fp.removed = false 
left join property_units pu on p.property_type <> 'APARTMENT_COMMUNITY' 
                            and pu.property_id = p.id
                            and pu.removed = false 
where p.id = 550
order by p.id;

का उपयोग करें या UNION ALL:

select p.*, fp.bedroom_count
from properties p
join floor_plans fp on fp.property_id = p.id and fp.removed = false 
where p.id = 550
and p.property_type = 'APARTMENT_COMMUNITY'
union all
select p.*, pu.bedroom_count
from properties p
join property_units pu on pu.property_id = p.id and pu.removed = false 
where p.id = 550
and p.property_type <> 'APARTMENT_COMMUNITY'
order by p.id;

(यदि property_type अशक्त हो सकता है, इन प्रश्नों की आवश्यकता होगी कुछ समायोजन करने के लिए इस के साथ सौदा.)

2021-11-24 06:51:04
0
select  case 
            when p.property_type ='APARTMENT_COMMUNITY' 
                then (  
                    select  array_agg(distinct fp.bedroom_count) 
                    from    floor_plans fp 
                    where   fp.removed = false 
                    and     fp.property_id=p.id ) 
            else (
                    select  (array_agg(distinct pu.bedroom_count)) 
                    from    property_units pu 
                    where   pu.removed = false 
                    and pu.property_id=p.id ) 
        end 
from    properties p 
where   p.id =550

इस का जवाब करने के लिए मेरी समस्या के मामले में किसी को यह की जरूरत है

2021-11-24 07:43:36

ठीक है, तो यह वास्तव में एक एकत्रीकरण आप के लिए देख रहे थे. अगली बार जब आप एक सवाल पूछना, कृपया दिखाने के लिए नमूना डेटा और उम्मीद परिणाम है, तो हम समझते हैं कि क्या आप पूछ रहे हैं.
Thorsten Kettner

हाँ, क्षमा करें ,यह मेरी पहली बार है )))) बहुत बहुत धन्यवाद मैं जाएगा
Grigor Martiros

मैं एक बहुत कुछ सीखा से अपने जवाब वैसे भी
Grigor Martiros

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में