2013-11-22 46 views
1

我试图找到凡人有一定的地址。SQL查找地址?

我有我认为是正确的代码,但无论我对'WHERE'子句做什么,都得不到返回的结果。

的人S.

住在雅法4389台创建的姓和名的唯一列表我已经试过

SELECT MORTAL.FIRST_NAME||' '||MORTAL.LAST_NAME "4389_Jaffa_Terrace_S" 
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%'; 


SELECT FIRST_NAME||' '||LAST_NAME "4389_Jaffa_Terrace_S" 
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%'; 

SQL> SELECT FIRST_NAME||' '||LAST_NAME "4389_Jaffa_Terrace_S" 
    2 FROM MORTAL 
    3 JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
    4 JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
    5 WHERE UPPER(ADDRESS.ADDRESS_LINE1) LIKE '%4389%'; 

no rows selected 

SQL> SELECT FIRST_NAME||' '||LAST_NAME "4389_Jaffa_Terrace_S" 
    2 FROM MORTAL 
    3 JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
    4 JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
    5 WHERE UPPER(ADDRESS.ADDRESS_LINE1) LIKE '%JAFFA%'; 

SQL> SELECT FIRST_NAME||' '||LAST_NAME "4389_Jaffa_Terrace_S" 
    2 FROM MORTAL 
    3 JOIN MORTAL_ADDRESS ON MORTAL.MORTAL_ID = MORTAL_ADDRESS.MORTAL_ID 
    4 JOIN ADDRESS ON MORTAL_ADDRESS.ADDRESS_ID = ADDRESS.ADDRESS_ID 
    5 WHERE SUBSTR(ADDRESS.ADDRESS_LINE1,0,4) LIKE '4389'; 

no rows selected 

编辑补充:

SQL> desc mortal 
Name 
-------------------------- 
MORTAL_ID 
SEX_TYPE_CODE 
FIRST_NAME 
LAST_NAME 
DOB 
MARITAL_STATUS_CODE 
SSN 
MIDDLE_NAME 
WORK_PHONE 

SQL> desc Mortal_address 
Name 
-------------------------- 
ADDRESS_ID 
MORTAL_ID 

SQL> desc address 
Name 
-------------------------- 
ADDRESS_ID 
ADDRESS_TYPE_CODE 
ZIP_CODE 
STATE_CODE 
ADDRESS_LINE1 
CITY 
ADDRESS_LINE2 
ADDRESS_LINE3 
COUNTRY 
+2

如果没有where子句,你会得到什么吗?您的连接是否正确/ – smk

+0

您能向我们展示MORTAL和MORTAL_ADDRESS的DDL以及应该返回的那些表中的数据吗?这将有助于确定问题。 – MichaelMilom

+0

好吧,坚持,我编辑我的帖子 –

回答

3

尝试逐步调试。

第一:

select * from address where address_line1 like '%4389%' 

那么,对于任何地址返回,

select * from Mortal_address where address_id = <the address_id that was returned from above> 

然后,

select * from mortal where mortal_id = <the mortal_id that was returned from above> 

也许这将显示在您的连接不正确加盟?

+0

我的步骤会稍有不同。第一个查询后,我会重复它,但加入。顺便说一句,我对这个问题的投票将你的声望推到了4位数。你欠我一杯啤酒。 –

+0

@DanBracuk - 同意你的想法......并且,感谢你的提升 - 将它添加到列表中:http://youowemeabeer.com/ – BWS

+0

他们都工作得很好。 –