Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只有在存在其他条件时,MySQL 2具有公共列的表才会匹配_Php_Mysql - Fatal编程技术网

Php 只有在存在其他条件时,MySQL 2具有公共列的表才会匹配

Php 只有在存在其他条件时,MySQL 2具有公共列的表才会匹配,php,mysql,Php,Mysql,不知道该如何准确解释,但现在开始 我有这些桌子: 信息: ------------------------ |msgid|clientid|message| ------------------------ |1 |536 |Hello | ------------------------ |2 |543 |Hello | ------------------------ |3 |529 |Hello | ---------------------

不知道该如何准确解释,但现在开始

我有这些桌子:

信息:

------------------------
|msgid|clientid|message|
------------------------
|1    |536     |Hello  |
------------------------
|2    |543     |Hello  |
------------------------
|3    |529     |Hello  |
------------------------
客户:

----------------------
|cleintid|wholesaleid|
----------------------
|536     |479        |
----------------------
|543     |480        |
----------------------
|529     |479        |
----------------------
如果消息记录中的客户机id归客户机所有,我只想从消息表中提取记录。批发商id=479

这样就可以从messages表中提取记录1和3

我知道如何处理完全独立的多个嵌套查询,但我知道在一个查询中使用纯SQL有一种更聪明的方法。我已经花了很长时间来学习这一点,所以我在这里想明白这一点

通常,在这种情况下,我会做一个简单的查询,然后在clients表中循环查找与批发id匹配的所有客户id。我会将它们全部填充到一个数组中,或者在循环时,对该客户id的所有消息执行单独的查询。这很糟糕,我知道有更好的方法。成吨的循环,在循环中,如果我的数据集变大,速度会很慢

我知道这是不正确的,但我希望它能帮助说明我正在努力做什么

类似于此,但没有多个循环:

从批发商ID=479的客户机中选择*

For Each Loop Here

    SELECT * FROM messages WHERE clientid=ThisClientID

    For Each Loop #2 HERE

        Print msgid, clientid, message

    End For Each Loop #2

End For Each Loop  
抱歉,这太让人困惑了,只是不知道如何更好地解释我现在是怎么做的,以及我想去哪里


我猜每个人都会告诉我去学习连接,但是,我在这方面花了很多时间,我不确定它是否适用于我试图实现的目标。

使用
内部连接
客户机中的
cleintid
可能是您的问题中的一个输入错误):


您可以将这两个表连接起来

SELECT m.*
FROM messages m
INNER JOIN clients c
ON m.clientid = c.clientid
AND c.wholesaleid = 479;

您只需要一个简单的连接
SELECT m.*
FROM messages m
INNER JOIN clients c
ON m.clientid = c.clientid
AND c.wholesaleid = 479;