0

我有一个包含三个表的数据库:NameAddressPhoneNameAddressAgeAgeSex

  • NameAddressPhonenameaddress和列phone
  • NameAddressAgenameaddress和列age
  • AgeSex有列agesex

我正在尝试编写一个(SQLite)查询来查找姓名、地址和年龄,以便姓名和地址同时出现在NameAddressPhoneandNameAddressAge中,并且年龄出现在NameAddressAgeandAgeSex中。使用 ,我可以做到一半(即,有两个表)inner join,但我只涉足 SQL,并希望专家能帮助我解决这个问题。我见过看起来很相似的解决方案,但并不完全遵循他们的逻辑。

提前致谢。

克里斯

4

2 回答 2

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来防止行的扩散。据推测,一个年龄可能会在该表中出现多次,这将导致输出重复行。

于 2013-06-17T21:00:45.817 回答
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 和女性。

我希望我能提供帮助,这就是你要找的。

于 2013-06-17T21:02:17.290 回答