从几个表中选择mysql

时间:2017-06-19 06:36:15

标签: php mysql

有3张桌子:

1)姓名:公司,领域:company_id,company_name;

enter image description here

2)姓名:联系人,字段:contact_id,contact_name;

enter image description here 3)name:connections,fields:connection_id,contact_id,company_id;

enter image description here

我正在进行多次搜索。例如,我想找到一家名为" qwer"和联系人称为" abc"。所以我的查询将是:

$query="SELECT * FROM COMPANIES WHERE company_name RLIKE (qwer)"

下一步我将与这些公司合作。下一个查询将是:

$query="SELECT * FROM connections WHERE company_id in (my massive)"

从此选择中获取大量的contact_id,然后进行上一次查询:

$query="SELECT * FROM contacts WHERE contact_name RLIKE(abc) and id in(my massive)"

那么,是否可以在一个查询中使用所有这些操作或使用比我使用的更少的操作?

例如,我需要找到所有被称为" oogle"与#34; ith"等联系人。因此,我需要一家公司" Google"有两个联系人:John Smith和Jenny Smith。

@Iqbal有很多帮助,但我还有一个名为地址的表,有两个字段:id和street。在表公司中还有一个名为addresses_id的字段。所以我试图通过这样的查询得到所有信息:

select con.connection_id, com.company_name, ctx.contact_name 
from addresses as add, connections as con 
left join companies as com on con.company_id = com.company_id
left join contacts as ctx on con.contact_id = ctx.contact_id
where add.id=com.Legal_address

但是它没有用,有一个错误:"你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在#con ;company_id = com.id LE'在第1行"

2 个答案:

答案 0 :(得分:2)

嗨,你可以使用这样的东西

select connections.connection_id, contacts.contact_id  companies.companyid
from connections 
left join companies on connections.company_id = companies.company_id
left join contacts on contacts.contact_id = connections.contact_id
where company_name LIKE ('%qwer%')
and contact_name LIKE('%abc%')

答案 1 :(得分:1)

您可以使用左连接..

如果要打开,请输入connection_id,company_name和联系人姓名

select con.connection_id, com.company_name, ctx.contact_name, add.street
from connections as con
left join companies as com on con.company_id = com.company_id
left join contacts as ctx on con.contact_id = ctx.contact_id
left join addresses as add on con.addresses_id = add.addresses_id