从MySQL中的多个表获取数据

从MySQL中的多个表获取数据,mysql,sql,join,inner-join,Mysql,Sql,Join,Inner Join,表1:tbl_触点 田地 user_id contact_id first_name last_name contact_id phone_number phone_type contact_id email_address email_type 表2:-待定电话详情 田地 user_id contact_id first_name last_name contact_id phone_number phone_type contact_id email_ad

表1:tbl_触点

田地

user_id

contact_id

first_name

last_name
contact_id

phone_number

phone_type
contact_id

email_address

email_type
表2:-待定电话详情

田地

user_id

contact_id

first_name

last_name
contact_id

phone_number

phone_type
contact_id

email_address

email_type
表3:待定电子邮件详细信息

田地

user_id

contact_id

first_name

last_name
contact_id

phone_number

phone_type
contact_id

email_address

email_type
查询-

SELECT 
       tbl_contacts.*, tbl_email_details.*, tbl_phone_details.* 
FROM 
       tbl_contacts, tbl_email_details, 
       tbl_phone_details 
WHERE 
       tbl_contacts.user_id = '1'
我想获得特定用户id的名字、姓氏、电话和电子邮件详细信息。我曾使用过上述查询,但它会给我重复的结果,我对数据库查询(如联接和内部查询)的了解较少

如果有人有任何想法,请帮忙

所需产出:-

联系人id、姓名、姓氏、电话号码、电话类型、电子邮件地址、电子邮件类型 (对于特定用户,电子邮件和电话号码可以有一个或多个值)。

这样试试

如果要检索特定ID的数据

如果要检索所有数据

从中选择tbl_联系人。*,tbl_电子邮件详细信息。*,tbl_电话详细信息。* tbl_联系人、tbl_电子邮件详细信息、tbl_电话详细信息在哪里 tbl_contacts.user_id='1'

你忘了提到加入所有表的条件

SELECT c.first_name, c.last_name, p.phone_number, e.email_address 
FROM tbl_contacts c, tbl_email_details e, tbl_phone_details p 
WHERE tbl_contacts.user_id = '1' 
AND c.contact_id = e.contact_id
AND e.contact_id = p.contact_id;

这就是我如何提出加入的请求。。。但可能有更好或更快的方法来做到这一点

SELECT first_name, last_name, phone_number, email_address 
FROM tbl_contacts 
JOIN tbl_phone_details 
    ON tbl_contacts.contact_id=tbl_phone_details.contact_id 
JOIN tbl_email_details 
    ON tbl_email_details.contact_id=tbl_contacts.contact_id 
WHERE tbl_contacts.user_id = '1';
为了不让你迷失在这里所有不同的答案中(这些答案可能都是正确的):

  • 您不需要为表指定别名(这只是为了可读性)
  • 如果列名是唯一的(例如,first_name仅在tbl_contacts中),则不需要在列列表中提及表名。如果您需要
    联系人id
    ,则应决定使用哪一个(例如,tbl\u电话详细信息。联系人id)
  • Jayaram提出的multi-select与JOIN完全相同。MySQL以相同的方式处理这两个查询(我只是在回答时没有看到他的答案,对不起)

Sql查询易于学习和编写,在从数据库获取重要数据时非常有用<代码>联接基本上用于根据两个表中的公共列从两个或多个表中获取数据。
内部联接
将选择两个表中通用的值。
Left Join
将选择左侧表中的所有数据,
Right Join
将根据id选择右侧表中的所有数据。
这些是SQL的基础知识,您必须知道如何使用它们获取准确的数据