簡體   English   中英

mysql子查詢有多個結果錯誤

[英]mysql subquery with multiple results error

我已經搜索了這個問題的解決方案,有些已經接近但似乎無法找到解決方案。 我有一個包含各種信息的“運行”表,一列是關於它適用的公司的信息。 我還有一個公司表,存儲公司的所有信息。 在運行表的公司列中,公司由公司表中的“索引器”標識。

現在我有一個搜索,您可以在其中搜索有關運行的任何信息,以查找包含搜索短語的任意數量的記錄,包括公司。 作為運行表的公司列只有標識符號即。 34,23,5等我還需要檢查公司表名稱欄中的匹配項。

這是我的查詢,如果只有一家公司匹配搜索結果,它可以正常工作。 我需要退回所有匹配的公司。

$sql_results = "SELECT * FROM runs WHERE name LIKE '%$searchname%' OR company = (SELECT indexer FROM companies WHERE name LIKE '%$searchname%' ) OR feild LIKE '%$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM