使用第一个表的输出从第二个表中选择特定数据

时间:2013-06-03 18:57:43

标签: php mysql select mysqli

我有两张桌子。一个是account,另一个是client表。用户将提供输入,在这种情况下为19。我想要做的是,我想要使用name作为标识符从<{1}}选择一个client,并且仅使用单个选择语句。我可以做两次选择查询,但这不是我想要的。

为了更好地解释它:用户提供输入,例如$ id = client_id,我将使用19表中的id来识别account,在这种情况下, client_id。然后,我将使用17name表中选择client

client_id
account table

account
enter image description here

我已经看过clientjoin,但我仍然陷入困境。请帮我解决一下这个。提前谢谢。

我目前没有工作的代码:

left join

8 个答案:

答案 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