Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 结合两个Select查询_Php_Mysql_Select - Fatal编程技术网

Php 结合两个Select查询

Php 结合两个Select查询,php,mysql,select,Php,Mysql,Select,我有两个表:条目和注释 我想选择用户评论的所有项目 为简单起见,假设items表有两列:item_id和item_content。让comments表有3列user\u id、item\u id和comment\u content 我得到了评论用户的用户id,我需要首先从评论表中选择所有项目id,其中用户id=myUserId 这是一个基本查询,用于从注释中选择项,其中用户标识=“$myUserId” 然后,我需要为上一个查询返回的每个item\u id选择item\u内容 我想做一个while

我有两个表:条目和注释

我想选择用户评论的所有项目

为简单起见,假设items表有两列:item_id和item_content。让comments表有3列user\u id、item\u id和comment\u content

我得到了评论用户的用户id,我需要首先从评论表中选择所有项目id,其中用户id=myUserId

这是一个基本查询,用于从注释中选择项,其中用户标识=“$myUserId”

然后,我需要为上一个查询返回的每个item\u id选择item\u内容

我想做一个while$row=$my\u first\u query->fetch\u array循环,并在其中执行类似于从item中选择item\u content的操作,其中item\u id=$row[item\u id] 但是这有点混乱,我想知道是否有一种更简单的方法,将两个查询合并为一个查询

使用内部联接:

您建议的先查询comments表,然后在结果集上循环的方法效率很低。在连接中,MySQL处理这个代数的速度比PHP代码快得多。

使用内部连接:


您建议的先查询comments表,然后在结果集上循环的方法效率很低。在join中,MySQL处理这个代数的速度比PHP代码快得多。

根据您的具体操作,您可以使用join子句。标题表信息将在所有行中找到,因此它可能不是您想要执行的操作


另一种方法是运行两个不同的查询,第一个未更改,第二个带有连接。然后,您将得到一个带有标题的结果,另一个带有您可以查看的所有详细信息。它比在网络上反复运行相同的查询更有效。

根据您的具体操作,您可以使用JOIN子句。标题表信息将在所有行中找到,因此它可能不是您想要执行的操作


另一种方法是运行两个不同的查询,第一个未更改,第二个带有连接。然后,您将得到一个带有标题的结果,另一个带有您可以查看的所有详细信息。它比在网络上反复运行同一个查询性能更好。

我试图先在phpmyAdmin SQL中运行您的代码来测试它,我得到了一个奇怪的错误:1267-非法混合排序规则latin1\u general\u ci、隐式和latin1\u swedish\u ci,隐式for operation“=”这可能是由于注释和项具有不同的表排序规则,或者这两个表中的项id字段具有不同的排序规则所致。请执行以下操作:将表状态显示为“items”,将表状态显示为“comments”。。。这两个表的排序规则是什么?我试图先在phpmyAdmin SQL中运行您的代码来测试它,我得到了一个奇怪的错误:1267-非法混合排序规则latin1_general_ci、隐式和latin1_swedish_ci、隐式for operation'='这可能是由于注释和项具有不同的表排序规则,或者这两个表中的item_id字段具有不同的排序规则。请执行以下操作:将表状态显示为“items”,将表状态显示为“comments”。。。这两个表的排序规则是什么?
SELECT t1.*
FROM items t1
INNER JOIN comments t2
    ON t1.item_id = t2.item_id
WHERE t2.user_id = myUserId