我是一名新程序员,我不知道该怎么做。
我有:
- 名为
customers
(cust_id,name)的表 - 名为
agents
(agent_id、agent_name)的表 - 名为
authorizations
(cust_id、agent_id)的表 - 名为
product_services
的表(p_s_id、cust_id、agent_id、item_name、item_id)
关于authorizations
表:agent_id
是cust_id
的授权销售人员的代理。因此,我需要能够仅提取此 agent_id
下特定 cust_id
的结果。
我需要执行一个查询,以返回客户在所有其他代理下拥有的所有产品和服务。在搜索中,它还应该返回他们在我手下拥有的产品/服务。
这是我迄今为止尝试过的:
$sql = "SELECT
product_services.item_name, agents.agent_name,
customers.name, agents.agent_id, product_services.item_id
FROM
product_services
LEFT JOIN agents ON product_services.agent_id = agents.agent_id
LEFT JOIN customers ON product_services.cust_id = customers.cust_id
WHERE authorizations.agent_id = '$aid'
AND product_services.item_name LIKE '%$q%'
ORDER BY product_services.id DESC
LIMIT $start, $limit";
最佳答案
KPO,
下面是我用来连接 2 个表的查询。对于您的查询来说是相同的,请注意从“LEFT JOIN”开始使用的语法
SELECT
user.username,
groups.group_id, groups.group_name,
sign.last_connected, sign.sign_id, sign.sign_name, sign.resolution_x, sign.resolution_y, LEFT(sign.sign_name, 1) AS first_char
FROM
user
LEFT JOIN(
groups, sign
)ON(
user.user_id = groups.userID AND
groups.group_id = sign.groupID
)
WHERE
username = ? AND
UPPER(sign.sign_name) BETWEEN "A" AND "Z"
OR sign.sign_name BETWEEN "0" AND "9" ORDER BY sign.sign_name
考虑到您的 SQL 查询最初是正确的,这应该适用于您的 LEFT JOIN 部分:
LEFT JOIN(agents, customers
)ON( product_services.agent_id = agents.agent_id
AND product_services.cust_id = customers.cust_id)
关于php - 如何连接所有表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272005/