在mysql中,基于给定id检索多个数据的最佳方法是什么?

3okqufwl  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(330)

我有三张table

Table1: Places (a place can have multiple contacts)
Columns: place_id, place_name, ...

Table2: Contacts (a contact can visit multiple places)
Columns: contact_id, contact_name, ...

Table3: PlacesContacts
Columns: id, place_id, contact_id

然后我想让所有的用户从一个特定的地方,然后我可以做一些像

select * from PlacesContacts where place_id = 3

我会得到所有的 contact_id's 我需要但我也想得到 contact_id's 数据来源 Contacts table。
实现这一目标的最佳方法是什么?任何帮助都将不胜感激。

ttp71kqs

ttp71kqs1#

使用联接:

SELECT pc.*, c.*
FROM PlacesContacts pc
INNER JOIN Contacts c
    ON pc.contact_id = c.contact_id
WHERE pc.place_id = 3;
k0pti3hp

k0pti3hp2#

你在placecontacts的联系人id来自contacts表,是吗?然后你可以加入这两个表

select PlacesContacts.*,Contacts.* from PlacesContacts
inner join Contacts on Contacts.contact_id=PlacesContacts.contact_id
 where place_id = 3
mf98qq94

mf98qq943#

可以使用简单的内部联接语句:

SELECT PlacesContacts.*, Contacts.* 
FROM PlacesContacts 
INNER JOIN Contacts 
ON PlacesContacts.contact_id = Contacts.contact_id
WHERE PlacesContacts.place_id = 3;

谢谢

9w11ddsr

9w11ddsr4#

我假设表-位置和联系人之间的关系是m:n(勾选#1如果你不知道什么是m-to-n关系),那么tim biegeleisen的答案将对你有所帮助。
如果是1:n的关系。也许您应该将place\u id添加到contacts表中并删除places联系人。

1.“n:m”和“1:n”在数据库设计中的意义

相关问题