我有一个包含三个名为NameAddressPhone
,NameAddressAge
和AgeSex
的表的数据库。
NameAddressPhone
包含name
,address
和phone
列。NameAddressAge
包含name
,address
和age
列。AgeSex
包含age
列和sex
。我正在尝试编写一个(SQLite)查询来查找姓名,地址和年龄,以便名称和地址同时显示在NameAddressPhone
和NameAddressAge
中,以便显示年龄在NameAddressAge
和AgeSex
中。我可以使用inner join
到达那里(即有两张桌子),但我只涉及SQL,并希望得到专家的帮助。我见过solutions that appear to be similar,但并不完全遵循他们的逻辑。
提前致谢。
克里斯
答案 0 :(得分:1)
我想你只想把它们放在明显的键上:
select *
from NameAddressPhone nap join
NameAddressAge naa
on nap.name = naa.name and
nap.address = naa.address join
(select distinct age
from AgeSex asx
) asx
on asx.age = naa.age
这是在AgeSex
中选择不同年龄以防止行增殖。据推测,一个年龄可能会在该表中出现多次,这会导致输出中的行重复。
答案 1 :(得分:1)
我假设你的桌子有以下布局
NameAddressPhone
================
Name
Address
Phone
NameAddressAge
==============
Name
Address
Age
AgeSex
======
Age
Sex
如果我正确理解所有内容,解决方案可能看起来像这样:
SELECT P.Name, P.Address, P.Phone, A.Age, S.Sex
FROM NameAddressPhone P
INNER JOIN NameAddressAge A ON P.Name = A.Name AND P.Address = A.Address
INNER JOIN AgeSex S ON A.Age = S.Age
请注意,如果AgeSex中有多个具有相同年龄的行,则加入AgeSex可能会产生重复的行。例如,没有办法区分21和男性21和女性。
我希望我能提供帮助,这就是你要找的。 p>