从MySQL中的多个表获取数据
表1:tbl_触点 田地从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
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中),则不需要在列列表中提及表名。如果您需要
,则应决定使用哪一个(例如,tbl\u电话详细信息。联系人id)联系人id
- Jayaram提出的multi-select与JOIN完全相同。MySQL以相同的方式处理这两个查询(我只是在回答时没有看到他的答案,对不起)
内部联接
将选择两个表中通用的值。Left Join
将选择左侧表中的所有数据,Right Join
将根据id选择右侧表中的所有数据。这些是SQL的基础知识,您必须知道如何使用它们获取准确的数据