2013-11-24 5 views
0

Может кто-нибудь показать мне, что я делаю неправильно?SQL Объединяет проблему oracle 11g

Вопрос:

Создать уникальный список имен и фамилий для любого живущего в 4389 Jaffa Terrace S.

В ERD:

enter image description here

Что Ive пробовал:

SQL> SELECT MORTAL.FIRST_NAME, MORTAL.LAST_NAME 
    2 FROM MORTAL 
    3 LEFT JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
    4 LEFT JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
    5 WHERE ADDRESS.ADDRESS_LINE1 LIKE '4389%'; 

no rows selected 

Мне не очень нравится оператор LIKE, я бы предпочел вместо этого использовать '='.

SQL> SELECT MORTAL.FIRST_NAME, MORTAL.LAST_NAME 
    2 FROM MORTAL 
    3 LEFT JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
    4 LEFT JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
    5 WHERE ADDRESS.ADDRESS_LINE1 = '4389%'; 

no rows selected 

SQL> SELECT MORTAL.FIRST_NAME, MORTAL.LAST_NAME 
    2 FROM MORTAL 
    3 LEFT OUTER JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
    4 LEFT OUTER JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
    5 WHERE ADDRESS.ADDRESS_LINE1 = '4389%'; 

no rows selected 

Я знаю, что в стыки где-то, но это, кажется, как прямо вперед, влево присоединиться, как и увиденным это Ive, на w3schools.com:

enter image description here

Ive запустить пару запросов чтобы проверить данные:

SQL> select address_line1 from address 
    2 where upper(substr(address_line1, 5,1)) = 'J'; 

no rows selected 

SQL> select address_line1 from address 
    2 where address_line1 like '4389%'; 

ADDRESS_LINE1 
------------------------------------------------------- 
4389 JAFFA Terrace S. 
4389 Jaffa Terrace S. 

есть ли способ сделать это, что я не видел, не используя «LIKE»?

(ответьте, пожалуйста, как ответ, а не комментарий, так что я могу до-тик вас. Спасибо!)

ответ

1
SELECT MORTAL.FIRST_NAME, MORTAL.LAST_NAME 
FROM MORTAL 
JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
WHERE ADDRESS.ADDRESS_LINE1 LIKE '%4389%'; 

Попробуйте это так, если это работает вам нужно TRIM на этой колонке.

Вероятно, адрес облетела

WHERE zip_code=4389 AND ADDRESS_LINE1='Jaffa...' 
+0

Я до сих пор получаю 'нет выбранных строк. –

+0

@BrianWilson Вы уверены, что в этой колонке есть данные? – Mihai

+0

да, данные находятся в этой колонке: 4389 JAFFA Terrace S. 4389 Jaffa Terrace S. @Mihai –