2011-03-02 25 views
0

我必須從兩個表中加入數據。 有三個表記錄,地址和名稱.Id是記錄表中的主鍵和地址和名稱表中的外鍵。特定記錄可以有多個名稱記錄。使用mysql從三個表中讀取數據

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
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 
1

您將需要通過記錄ID對名稱進行臨時查詢以查找FIRST ID並使用THAT作爲加入實際名稱表的基礎。此外,您沒有爲您的地址表提供任何樣本數據,但是可以以與此處執行的名字查詢類似的方式完成。此外,地址表是否會與特定的具名人員相關聯,而不僅僅是ID?這與記錄ID是1:很多關係嗎?

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