मेरे पास एक एसक्यूएल प्रश्न है। यह एक साधारण समस्या है, लेकिन मैं बिल्कुल भी SQL आदमी नहीं हूँ।

यहाँ स्थिति है, मेरे पास तीन टेबल हैं:

CUSTOMER(
    PK(customer_id)
)

LOAN(
    PK(loan_id),
    customer_it,
    behavior_id
)

BEHAVIOR(
    PK(behavior_id),
    unpaid_number
)

// PK(x): x is a primary key.

मैं उन सभी CUSTOMERs का चयन करना चाहूंगा जिनके पास unpaid_number >= 1 है।

क्या कोई मुझे इसके आसपास काम करने का तरीका दिखा सकता है?

धन्यवाद

-3
Chihab 3 मई 2018, 17:29

4 जवाब

आप INNER JOIN ढूंढ रहे हैं। इस तरह प्रयोग करें:

SELECT * FROM CUSTOMER c
INNER JOIN LOAN l ON c.customer_id = l.customer_it
INNER JOIN BEHAVIOR b ON b.behavior_id = l.behavior_id
WHERE b.unpaid_number>=1
7
apomene 3 मई 2018, 17:33

वास्तव में, यदि आप सभी ग्राहकों को चाहते हैं, तो संभवतः आप प्रति ग्राहक एक पंक्ति चाहते हैं, व्यवहार में मेल खाने वाली पंक्तियों की संख्या की परवाह किए बिना।

यह exists या in का उपयोग करने का सुझाव देगा:

select c.*
from customer c
where exists (select 1
              from loan l join
                   behavior b
                   on b.behavior_id = l.behavior_id
              where b.unpaid_number >= 1 and
                    l.customer_id = c.customer_id
             );

यदि आप select distinct का उपयोग करने पर विचार कर रहे हैं तो यह विशेष रूप से महत्वपूर्ण है।

2
Gordon Linoff 3 मई 2018, 17:36

कृपया, नीचे दिए गए कोड का प्रयास करें

SELECT c.*
FROM CUSTOMER c
INNER JOIN LOAN l
    ON l.customer_id = c.Customer_id
INNER JOIN BEHAVIOR b
    ON b.behavior_id = l.behavior_id
WHERE  unpaid_number >=1
1
Joe Taras 3 मई 2018, 17:55

ये कोशिश करें?

SELECT LOAN.customer_it FROM LOAN
WHERE LOAN.behavior_id IN
    (SELECT BEHAVIOR.behavior_id
    from BEHAVIOR where BEHAVIOR.unpaid_number>=1)
1
Joe Taras 3 मई 2018, 17:55