我必须加入两个表中的数据。 有三个表记录,地址和名称.Id是记录表中的主键和地址和名称表中的外键。特定记录可以有多个名称记录。
RECORD(id (PK),text,search)
address(address_id(PK),type,street,city, id (FK))
name(name_id(PK),name,id (FK))
I want to get the data from these three tables in a way so that i will get the only first name record for each record id,not all the name records for record id's.
insert into RECORD values (1,record1,record1search);
insert into RECORD values (2,record2,record2search);
insert into name values (1,xxx,1);
insert into name values name(2,yyy,1)
insert into name values name(3,zzz,2)
i want to retriev the values in way:
record_id,text,namename_id:
1,record1,xxx,1
2,record2,zzz,3
我希望唯一的名字记录不是特定记录的第二个或第三个名称记录。
请帮忙。
答案 0 :(得分:1)
您需要通过记录ID对名称进行临时查询以查找FIRST ID并使用该作为基础来加入实际名称表。此外,您没有为地址表提供任何示例数据,但这将以与此处执行的名字查询类似的方式完成。此外,地址表是否与特定的指定人员相关联,而不仅仅是ID?那将是1:记录ID的多少关系?
select
r.id,
r.text,
n2.name,
n2.name_id
from
Record r,
join ( select n.id, min( n.name_id ) FirstNameID
from name n
group by n.id ) FirstNames
on r.id = FirstNames.id
join name n2
on FirstNames.FirstNameID = n2.name_id
答案 1 :(得分:0)
SELECT RECORD.id, RECORD.text, name.name, name.name_id
FROM RECORD
LEFT JOIN address
ON address.id = RECORD.id
LEFT JOIN name
ON name.id = RECORD.id
GROUP BY RECORD.id