PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了带有多个结果错误的mysql子查询大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在寻找解决此问题的方法,有些方法很接近,但似乎找不到解决方法.我有一张包含各种信息的“运行”表,其中一栏是有关它适用的公司的信息.我还有一张存储公司所有信息的公司表.在运行表的公司列中,公司由公司表中的“索引器”标识.

现在,我有一个搜索,您可以在其中搜索有关运行的任何信息,以查找包含搜索短语(包括公司)的任何数量的记录.作为运行表的company列,仅具有标识符编号,即. 34、23、5等,我还需要检查公司表名称栏中的匹配项.

这是我的查询,如果只有一家公司与搜索结果匹配,则可以正常工作.我需要退回所有符合条件的公司.

$sql_results =“ SELECT * FROM运行名称为’%$searchname%’的公司或公司=(SELECT FROM名称为LIKE’%$searchname%’的公司的索引器)或带假名称’%$searchname%’ORDER BY date_due”;

    while($result_results = @MysqL_fetch_array($query_results))
    {
    $resultnm_arraY[]=$result_results['name'];
    $cmp_id = $result_results['company'];
        $sql2 = "SELECT name FROM companies WHERE indexer = '$cmp_id' LIMIT 1";
        $query2 = @MysqL_query($sql2);
        $result2 = @MysqL_fetch_array($query2);
        $resultcpy_arraY[]=$result2['name'];
    $resultfld_arraY[]=$result_results['feild'];
    $resultdt_arraY[]=$result_results['date_due'];
    $resultid_arraY[]=$result_results['indexer'];
    }

我正在将结果输入到数组中,并使用TBS模板引擎创建结果表等.我是一个新手,所以对您有所帮助.从我收集的资料中,我需要使用join.但是我似乎无法使其工作…

解决方法:

您能不能仅使用IN:

SELECT * 
FROM runs 
WHERE name LIKE '%$searchname%' 
    OR company IN (
        SELECT indexer 
        FROM companies 
        WHERE name LIKE '%$searchname%' ) 
    OR feild LIKE '%$searchname%' 
ORDER BY date_due

给出您的评论:“如果只有一家公司匹配搜索结果,则效果很好”,这使我相信,如果有多家公司匹配搜索条件,则查询会由于=而失败.

有了您的编辑,您可以使用JOIN简化此过程,并且不再需要循环中的其他SELEct语句:

SELECT r.*, c.name
FROM runs r
    JOIN companies c on r.company = c.indexer
WHERE r.name LIKE '%$searchname%' 
    OR r.feild LIKE '%$searchname%' 
ORDER BY r.date_due

大佬总结

以上是大佬教程为你收集整理的带有多个结果错误的mysql子查询全部内容,希望文章能够帮你解决带有多个结果错误的mysql子查询所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: