mysql多表外键? - 初学者

时间:2010-12-25 10:20:18

标签: php mysql

我有两张桌子,

Table1: 
id, int1, int2, int3
john,1,2,4
tim,2,3,4
pete,1,3,4

Table2:
integer,blob
1,wins
2,backtickle
3,text
4,whatever

我想要使用的查询给出了我想从table2获取与table1中每个整数列关联的blob数据的id。

我可以在这里使用的具体查询是什么?

我正在寻找的样本结果将是:

搜索John返回“wins”,“backtickle”,“whatever”

搜索皮特返回“胜利”,“文字”,“无论什么”

我认为它与外键有关,但不确定...初学者水平请!使用1个表,它将是SELECT * FROM table1 WHERE id =“........”,但不确定我现在给出的设置。

1 个答案:

答案 0 :(得分:1)

数据库的结构看起来并不理想。你限制自己每人3件物品,并且你使用列而不是行来列出它们。您在数据中实际拥有的是Table1和Table2之间的多对多关系。我建议使用三个表:

Persons: 
name, personid
john,1
tim,2
pete,3

PersonBlobs:
personid, blobid
1,1
1,2
1,4
2,2
2,3
2,4
3,1
3,3
3,4

Blobs:
blobid,blob
1,wins
2,backtickle
3,text
4,whatever

PersonBlobs会为您提供人与Blob之间的多对多链接。

然后查询变为:

select Blobs.blob
from Blobs inner join PersonBlobs on Blobs.blobid = PersonBlobs.blobid
           inner join Persons on PersonBlobs.personid = Persons.personid
where Persons.name = 'John'