2017-03-09 2 views
0
SELECT DISTINCT 
    ,PH.PHONE_TYPE_CD 
    ,PH.PHONE_NUM 
FROM PERSON P 
LEFT JOIN PHONE PH 
    ON PH.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH.PHONE_TYPE_CD   = ? 
    AND PH.ACTIVE_IND    = 1 
LEFT JOIN PHONE PH 
    ON PH.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH.PHONE_TYPE_CD   = ? 
    AND PH.ACTIVE_IND    = 1 
LEFT JOIN PHONE PH 
    ON PH.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH.PHONE_TYPE_CD   = ? 
    AND PH.ACTIVE_IND    = 1 

Hier PHONE_TYPE_CD wird von der Java-Seite und auf der Grundlage der PHONE_TYPE_CD weitergegeben werden, sollte die Abfrage ausführen und Ergebnisse zurück.die gleiche Tabelle dreimal und abrufen eine Spalte von jenen

Da ich neu in SQL bin, bin ich nicht sicher, wie dies zu erreichen ist. Ich verstehe die ganze 3 verbindet Aliase wie PHONE PH1, PHONE PH2 und so weiter .. Meine Frage ist, kann ich wie unten ein und erhalten die PHONE_NUM auf dem übergebenen PHONE_TYPE_CD basierten Code haben sollte:

SELECT DISTINCT 
    ,PH1.PHONE_TYPE_CD 
    ,PH1.PHONE_NUM 
    ,PH2.PHONE_TYPE_CD 
    ,PH2.PHONE_NUM 
    ,PH3.PHONE_TYPE_CD 
    ,PH3.PHONE_NUM 
    FROM PERSON P 
LEFT JOIN PHONE PH1 
    ON PH1.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH1.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH1.PHONE_TYPE_CD   = ? 
    AND PH1.ACTIVE_IND    = 1 
LEFT JOIN PHONE PH2 
    ON PH2.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH2.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH2.PHONE_TYPE_CD   = ? 
    AND PH2.ACTIVE_IND    = 1 
LEFT JOIN PHONE PH3 
    ON PH3.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH3.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH3.PHONE_TYPE_CD   = ? 
    AND PH.ACTIVE_IND    = 1 

Ich habe Zweifel an der Wiedergewinnungsteil.

+2

Bitte Beispieldaten und erwartete Ausgabe hinzufügen. –

+0

PHONE_TYPE_CD enthält Daten wie HOME, BUSINESS, OFFICE. Also, wenn die PHONE_TYPE_CD HOME ist, möchte ich die PHONE_NUM dieses Typs abrufen –

+1

Versuchen Sie, uns eine Beispieldatenstruktur zu geben, so können wir Ihnen eine Antwort auf Ihre Frage geben, nicht nur einfach Ihre Bedingung angeben. –

Antwort

0

Sie können dies tun:

SELECT DISTINCT 
    ,PH1.PHONE_TYPE_CD 
    ,PH1.PHONE_NUM 
    ,PH2.PHONE_TYPE_CD 
    ,PH2.PHONE_NUM 
    ,PH3.PHONE_TYPE_CD 
    ,PH3.PHONE_NUM 
    FROM PERSON P 
LEFT JOIN PHONE PH1 
    ON PH1.PARENT_ENTITY_ID   = P.PERSON_ID 
    AND PH1.PARENT_ENTITY_NAME  = 'PERSON' 
    AND PH1.PHONE_TYPE_CD   in (type1, type2, type3) 
    AND PH1.ACTIVE_IND    = 1 
Verwandte Themen