account
,另一个是client
表。用户将提供输入,在这种情况下为19
。我想要做的是,我想要使用name
作为标识符从<{1}}选择仅一个client
,并且仅使用单个选择语句。我可以做两次选择查询,但这不是我想要的。
为了更好地解释它:用户提供输入,例如$ id = client_id
,我将使用19
表中的id
来识别account
,在这种情况下, client_id
。然后,我将使用17
从name
表中选择client
。
client_id
表
account
表
我已经看过client
和join
,但我仍然陷入困境。请帮我解决一下这个。提前谢谢。
我目前没有工作的代码:
left join
答案 0 :(得分:3)
简单的内部联接将执行任务
$query = "select
account.id,client.client_id
from
account
join
client
on
account.client_id = client.client_id
where
account.id = 19";
答案 1 :(得分:1)
这应该使用INNER JOIN
:
SELECT c.name
FROM Client C
INNER JOIN Account A ON C.Client_Id = A.Client_Id
WHERE A.Id = 19
您的查询是生成笛卡尔积,因为您没有加入任何字段的表格。
答案 2 :(得分:1)
您没有加入帐户和客户。 此外,您只需要客户名称,查询必须是:
Select distinct client.client_name from account, client where client.client_id=account.account_id and account_id=19
答案 3 :(得分:1)
您需要指定用于连接两个表的列。
关于SQL语言,默认行为是通过将一个表中的每一行与另一个表中的每一行相匹配来连接两个表,这是一个不幸的事实。也就是说,每个可能的配对都是结果集的一部分。 SQL没有任何方法可以推断您要将哪些列用作连接条件,因此您必须自己指定条件。
以下是查询的更好表单:
$sql = " SELECT account.id, client.client_id
FROM account JOIN client USING (client_id)
WHERE account.id = 19";
请使用JOIN
语法。自1992年以来,它一直是在SQL中进行连接的标准方法。逗号样式语法仅用于向后兼容1992之前的SQL。它们的表现完全相同,但1992语法可以做外连接,而且更容易阅读。
PS:PHP支持多行字符串,因此不需要像你一样将字符串连接在一起。这是一种Java习惯。
答案 4 :(得分:0)
$sql = " SELECT account.id, client.client_id
FROM `account`
INNER JOIN `client` ON `client`.client_id = `account`.`client_id`
WHERE account.id = 19";
答案 5 :(得分:0)
由于您没有提供有关客户端表结构的信息,这只是一个猜测:
SELECT account.id, client.client_id
FROM account, client
WHERE account.id = 19
AND account.client_id = client.id
答案 6 :(得分:0)
也许你应该尝试:
$sql = "SELECT account.id, client.client_id
FROM account, client
WHERE account.client_id=client.id AND account.id = 19 "
答案 7 :(得分:0)
这应该为你做 从a.client_id = c.client_id上的客户端c上的左连接中选择c.name,c.client_id,a.id 其中a.id = 19