2014-09-18 51 views
-2

我有两个表两个表中的语句选择

+------------------------------------+ 
| Family        | 
|------------------------------------| 
| FamilyID       | 
| Family Tel       | 
| Address       | 
| Area        | 
+------------------------------------+ 

+------------------------------------+ 
| Members       | 
|------------------------------------| 
| Family ID       | 
| Person Name      | 
| Person Tel       | 
| Person Job       | 
| Birthday       | 
+------------------------------------+ 

我想在表membersPerson Name栏搜索,但我想它在表中的所有成员谁具有相同的Family ID返回,也从表Family返回同一ID的家庭数据,虽然搜索将由人名

任何线索?

+1

你试过什么,你有什么具体问题。 SO不是免费的代码编写服务,你需要付出一些努力。 – 2014-09-18 21:03:38

+1

这个请求有一些逻辑问题。如果两个人具有相同的名字但属于不同的家庭呢?或“人名”包含姓名和姓氏? (在任何情况下,这不会排除homonimy) – Steve 2014-09-18 21:12:48

回答

0

因为只有一个家庭和很多成员,所以最好做两个查询而不是一个查询(每个成员都有自己的家庭信息副本)。

SELECT Family.* from Family INNER JOIN Members ON Members.FamilyID = Family.Family 
WHERE Member.PersonName = "Joe" 

SELECT B.* from Members A INNER JOIN Members B ON A.FamilyID = B.FamilyID 
WHERE A.PersonName = "Joe" 

如果你真的想要一个查询:

SELECT B.*, Family.* FROM Members A INNER JOIN Members B ON A.FamilyID = B.FamilyID, Family 
WHERE A.PersonName = "Joe" 
AND Family.FamilyID = B.FamilyID 
+0

以及如何使用这两个查询来获取代码来获得一个家庭及其所有成员? – pharaon 2014-09-18 23:35:40

+0

如果你问如何从VB.NET中读取访问数据库(基于你的标签),那么我建议你Google它。这里有一个例子:[link](http://stackoverflow.com/questions/11384216/database-access-in-vb-net)。 – Ian 2014-09-20 00:24:08

+0

我真的想知道如何结合他们,但我已经做到了..thx很多帮助你的帮助 – pharaon 2014-09-22 07:45:06

0

,关键是要加入会员表两次,一次用于过滤通过名称porson并一次全部显示家风承包商,客人 试图沿东西这行:

SELECT members.*, family.adress 
    FROM members AS members_1 INNER JOIN (members INNER JOIN family ON  members.familyId=family.FamilyId) ON members_1.familyId = members.familyId 
    WHERE (((members_1.name)="john"));