我有两个表人和帐户。和表包含如下记录,
人
Field<?> myAliasedField = field(name("a", "my_field"), String.class);
帐户
----------------------------------------
Slno Name Phone Acc_type
----------------------------------------
1 Robert 211211 0
2 Mia 332332 35001
我尝试根据 Slno 获取记录详细信息whick是主键。我写了如下查询,
----------------------------------------
Acc_type Acc_Desc
----------------------------------------
35001 Regular
35002 non-Regular
对于上述查询我得到以下输出
Select P.Slno,P.Name,P.Phone,P.Acc_type,A.Acc_Desc
From Person P
Join Account A
On A.Acc_type = P.Acc_type
Where P.Slno = '2'
但是Account表中的Acc_type是为 Slno 1 而给出的,但没有记录。 我需要按如下方式获取输出,这是可能的
-----------------------------------------------------
Slno Name Phone Acc_type Acc_Desc
-----------------------------------------------------
2 Mia 332332 35001 Regular
查询中的哪些字符将使此输出成为可能。
答案 0 :(得分:0)
SELECT P.Slno,P.Name,P.Phone,P.Acc_type,A.Acc_Desc
FROM Person P
RIGHT OUTER JOIN Account A ON A.Acc_type = P.Acc_type
答案 1 :(得分:0)
Oracle 11g设置:
CREATE TABLE Person (
Slno INT,
Name VARCHAR2(20),
Phone INT,
Acc_type INT
);
INSERT INTO Person
SELECT 1, 'Robert', 211211, 0 FROM DUAL UNION ALL
SELECT 2, 'Mia', 332332, 35001 FROM DUAL;
CREATE TABLE Account (
Acc_type INT,
Acc_Desc VARCHAR2(20)
);
INSERT INTO Account
SELECT 35001, 'Regular' FROM DUAL UNION ALL
SELECT 35002, 'non-Regular'FROM DUAL;
查询1 :
SELECT P.*,
A.Acc_Desc
FROM Person p
LEFT OUTER JOIN
Account a
ON (p.acc_type = a.acc_type )
<强> Results 强>:
| Slno | Name | Phone | Acc_type | Acc_Desc |
|------|--------|--------|----------|----------|
| 2 | Mia | 332332 | 35001 | Regular |
| 1 | Robert | 211211 | 0 | (null) |
答案 2 :(得分:-1)
尝试左/右连接。以下是它的工作原理http://www.w3schools.com/sql/sql_join_left.asp
编辑形式:
在你的情况下,它看起来像这样:
Select P.Slno,P.Name,P.Phone,P.Acc_type,A.Acc_Desc
From Person P
Left Join Account A
On A.Acc_type = P.Acc_type
答案 3 :(得分:-1)
帐户表中没有帐户类型0,因此联接会将其过滤掉。