Список записей объединенной таблицы - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть следующие таблицы:

клиент ( cus_id , cus_name)

счет ( acc_num , acc_balance bra_code )

филиал ( bra_code , bra_address)

если я хочу перечислить всех клиентов, у которых есть аккаунты в нескольких филиалах, и их данные. Я новичок в оракуле, надеюсь, каждый может помочь.

На самом деле это часть моего задания, до сих пор я делал вот так ...

SELECT  DISTINCT 
        C.CUS_ID, 
        (C.CUS_FIRST_NAME || ' ' || C.CUS_LAST_NAME) AS CUS_NAME,
        C.CUS_IC, 
        C.CUS_ADDRESS, 
        C.CUS_POSTCODE, 
        C.CUS_CONTACT, 
        C.CUS_EMAIL, 
        C.CUS_AGE,     
        C.CUS_GENDER, 
        C.CUS_STATUS,
        B.BRA_CODE, 
        B.BRA_ADDRESS, 
        B.BRA_POSTCODE, 
        R.REG_STATE, 
        R.REG_COUNTRY
FROM CUSTOMER C, ACCOUNT A,BRANCH B, REGION R
WHERE C.CUS_ID=A.CUS_ID AND 
      A.BRA_CODE=B.BRA_CODE AND 
      B.REG_ID=R.REG_ID AND 
      A.BRA_CODE IN (SELECT A.BRA_CODE
                     FROM CUSTOMER C, ACCOUNT A,BRANCH B
                     WHERE C.CUS_ID=A.CUS_ID AND A.BRA_CODE=B.BRA_CODE
                     GROUP BY A.BRA_CODE HAVING COUNT(A.BRA_CODE)>1)
GROUP BY 
        C.CUS_ID,
        C.CUS_FIRST_NAME,
        C.CUS_LAST_NAME,
        C.CUS_IC, 
        C.CUS_ADDRESS, 
        C.CUS_POSTCODE, 
        C.CUS_CONTACT, 
        C.CUS_EMAIL, 
        C.CUS_AGE, 
        C.CUS_GENDER, 
        C.CUS_STATUS, 
        B.BRA_CODE, 
        B.BRA_ADDRESS, 
        B.BRA_POSTCODE, 
        R.REG_STATE, 
        R.REG_COUNTRY 
        HAVING COUNT(C.CUS_ID)>1;

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Попробуйте это:

SELECT *
FROM customer c, account a, branch b
WHERE c.cus_id IN (
        SELECT a2.cus_id
        FROM account a2, branch b2
        WHERE a2.bra_code = b2.bra_code
        GROUP BY a2.cus_id
        HAVING COUNT(DISTINCT(b2.bra_code)) > 1
    )
    AND c.cus_id = a.cus_id
    AND a.bra_code = b.bra_code
2 голосов
/ 06 декабря 2011

Один ответ может быть что-то вроде этого:

SELECT  DISTINCT 
        C.CUS_ID, 
        (C.CUS_FIRST_NAME || ' ' || C.CUS_LAST_NAME) AS CUS_NAME,
        C.CUS_IC, 
        C.CUS_ADDRESS, 
        C.CUS_POSTCODE, 
        C.CUS_CONTACT, 
        C.CUS_EMAIL, 
        C.CUS_AGE,     
        C.CUS_GENDER, 
        C.CUS_STATUS,
        B.BRA_CODE, 
        B.BRA_ADDRESS, 
        B.BRA_POSTCODE, 
        R.REG_STATE, 
        R.REG_COUNTRY
FROM CUSTOMER C, ACCOUNT A,BRANCH B, REGION R
WHERE C.CUS_ID=A.CUS_ID AND 
      A.BRA_CODE=B.BRA_CODE AND 
      B.REG_ID=R.REG_ID AND 
      EXISTS (SELECT NULL FROM ACCOUNT O
              WHERE A.CUS_ID = O.CUS_ID AND A.BRA_CODE <> O.BRA_CODE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...