题
我有3个表
[contact]
------------------
cID (PRIMARY KEY, INT) || name || lastupdate (TIMESTAMP)
[phone]
----------------------
cID (FOREIGN KEY, linked to contact.cID) || phonenumber || pID (phone number ID, since each contact can have many numbers)
[email]
------------------------
cID (FOREIGN KEY) || email
我需要做一个选择的查询,这将取所有cID的每个联系人,他们的姓名,他们的电话号码如果pID是1和他们的电子邮件都在一个表中。所以输出这样的例子。
cID | name | phone1 | email
----------------------------------------------
45 | John Smith | 1234567 | john.s@test.com
46 | Darth Vader | 9999999 | vader@deathstar.org
47 | Yoda | 1236547 |
-----------------------------------------------------------------------------
我试图这样做像这样
SELECT contact.cID, name, phone, email FROM contact, phone, email
WHERE contact.cID = phone.cID AND contact.cID = email.cID AND phone.pID = 1;
这几乎不会,但是,如果一个接触没有任何一个的电话号码或电子邮件,通过他们的名字然后他们就会被排除在外。
我需要显示所有的联系人,无论天气,他们有一个电子邮件或电话号码在数据库。
我如何可以做到这一点?
解决方案
Select c.cID, C.name, P.phone As phone1, E.email
From contact As C
Left Join phone As P
On P.cID = C.cID
And P.pID = 1
Left Join email As E
On E.cID = C.cID
在短暂的,你需要放标准 pID = 1
在对条款时加入 phone
要 contact
.此外,你需要使用左加以处理的情况下,他们没有电话或电子邮件。
不隶属于 StackOverflow