簡體   English   中英

左加入 where 和 like

[英]Left join with where and like

我有這個查詢,我使用 php 搜索代碼,問題出在本地主機上,這個查詢工作並給我我需要的結果,但在網上我收到了這條消息

您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,以在第 30 行的“where tbl_project.db_projectname like '%saida%' or tbl_project.db_location lik”附近使用正確的語法

代碼

 $qq=array();
    if(isset($_POST['search']) && !empty($_POST['search'])){  
    $search =  mysqli_real_escape_string($conn,$_POST['search']); 
    $qq[] = "tbl_project.db_projectname like '%".$search."%' ";  
    $qq[] = "tbl_project.db_location like '%".$search."%' ";
    $qq[] = "tbl_project.db_client like '%".$search."%' ";
    $qq[] = "tbl_project.db_offer like '%".$search."%' ";    
    $qq[] = "tbl_project.db_sheet like '%".$search."%' ";
    $qq[] = "tbl_project.db_invoice like '%".$search."%' ";
    $qq[] = "tbl_project.db_po like '%".$search."%' ";
    } 
$second=true;
   foreach($qq as $qu){  
        if($second){  
        $sq .= " where  ".$qu;      
        $second = false;  
        }else{$sq .= " or ".$qu;}} 
$sql=mysqli_query($conn,"SELECT
    tbl_project.db_id,
    tbl_project.db_projectname,
    tbl_project.db_location,
    tbl_project.db_client,
    tbl_project.db_transferredto,
    tbl_project.db_psd,
    tbl_project.db_pdd,
    tbl_project.db_duration,
    tbl_project.db_past,
    tbl_project.db_padd,
    tbl_project.db_aduration,
    tbl_project.db_percent,
    tbl_project.db_pnote,
    tbl_project.db_user,
    tbl_project.db_cpercentage,
    tbl_project.db_epercentage,
    tbl_project.db_mpercentage,
    tbl_project.db_status,
    tbl_project.db_offer,
    tbl_project.db_sheet,
    tbl_project.db_invoice,
    tbl_project.db_po,
    sum(
        tbl_activities.db_totalcost
    ) AS total_cost
FROM
    tbl_project
LEFT JOIN tbl_activities ON tbl_project.db_projectname = tbl_activities.db_projectname
{$sq} GROUP BY tbl_project.db_id")or die(mysqli_error($conn));

/************************************

SELECT tbl_project.db_id, tbl_project.db_projectname, tbl_project.db_location, tbl_project.db_client, tbl_project.db_transferredto, tbl_project.db_psd, tbl_project.db_pdd, tbl_project.db_duration, tbl_project.db_past, tbl_project.db_padd, tbl_project.db_aduration, tbl_project.db_percent, tbl_project.db_pnote, tbl_project.db_user, tbl_project.db_cpercentage, tbl_project.db_epercentage, tbl_project.db_mpercentage, tbl_project.db_status, tbl_project.db_offer, tbl_project.db_sheet, tbl_project.db_invoice, tbl_project.db_po, sum( tbl_activities.db_totalcost ) AS total_cost FROM tbl_project LEFT JOIN tbl_activities ON tbl_project.db_projectname LIKE tbl_activities.db_projectname where tbl_project.db_id='79' where tbl_project.db_projectname like '%saida%' or tbl_project.db_location like '%saida%' or tbl_project.db_client like '%saida%' or tbl_project.db_offer like '%saida%' or tbl_project.db_sheet like '%saida%' or tbl_project.db_invoice like '%saida%' or tbl_project.db_po like '%saida%' GROUP BY tbl_project.db_id

您添加了兩個“where”子句。

SELECT tbl_project.db_id, tbl_project.db_projectname, 
tbl_project.db_location, tbl_project.db_client, 
tbl_project.db_transferredto, 
tbl_project.db_psd, tbl_project.db_pdd, tbl_project.db_duration, 
tbl_project.db_past, tbl_project.db_padd, tbl_project.db_aduration, 
tbl_project.db_percent, tbl_project.db_pnote, tbl_project.db_user, 
tbl_project.db_cpercentage, tbl_project.db_epercentage, 
tbl_project.db_mpercentage, tbl_project.db_status, tbl_project.db_offer,
tbl_project.db_sheet, tbl_project.db_invoice, tbl_project.db_po, 
sum( tbl_activities.db_totalcost ) AS total_cost FROM tbl_project
LEFT JOIN tbl_activities ON tbl_project.db_projectname 
LIKE tbl_activities.db_projectname where tbl_project.db_id='79'
and tbl_project.db_projectname like '%saida%' or    
tbl_project.db_location 
like '%saida%' or tbl_project.db_client like '%saida%' or 
tbl_project.db_offer 
like '%saida%' or tbl_project.db_sheet like '%saida%' or 
tbl_project.db_invoice 
like '%saida%' or tbl_project.db_po like '%saida%' GROUP BY  
tbl_project.db_id

在左邊的 Join 部分使用“LIKE”而不是“=”,這樣它將是

LEFT JOIN tbl_activities ON tbl_project.db_projectname LIKE tbl_activities.db_projectname
{$sq} GROUP BY tbl_project.db_id")or die(mysqli_error($conn));

暫無
暫無

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

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