簡體   English   中英

使用JOIN從兩個表中選擇的SQL查詢

[英]SQL Query using a JOIN to select from two tables

我在PHP中有以下SQL查詢:

$sql="SELECT * from customer c JOIN commsone_phonelines b where b.phone_number LIKE '%".$_POST["search"]."%' AND ";
    $sql.="c.company like '%".$_POST["search"]."%' OR ";
    $sql.="c.forename like '%".$_POST["search"]."%' OR ";
    $sql.="c.surname like '%".$_POST["search"]."%' OR ";
    $sql.="CONCAT_WS(' ',c.forename, c.surname) LIKE '%".$_POST["search"]."%' OR ";
    $sql.="c.phone like '%".$_POST["search"]."%' OR ";
    $sql.="c.accountnumber like '%".$_POST["search"]."%' OR ";
    $sql.="c.customerid like '%".$_POST["search"]."%' OR ";
    $sql.="c.voip_account like '%".$_POST["search"]."%' OR ";
    $sql.="REPLACE(c.postcode,' ','') LIKE '%".$_POST["search"]."%' OR ";
    $sql.="REPLACE(c.postcode,'',' ') LIKE '%".$_POST["search"]."%' OR ";
    $sql.="c.postcode LIKE '%".str_replace(' ','',$_POST["search"])."%' ";
    $sql.=" AND c.resellerid = '' ORDER BY company ASC";

我基本上是試圖從兩個不同的表中選擇,而我只需要從客戶表中回顯信息。

如果在commsone_phonelines表中找到了commsone_phonelines ,則應鏈接commsone_phonelines.customer_seq = customer.sequence

更新:

我剛剛運行此查詢:

SELECT c.* from customer c INNER JOIN commsone_phonelines b ON c.sequence = b.client_seq where b.phone_number LIKE '%boat%' OR c.company like '%boat%'

它從客戶表返回正確的行,但是它顯示同一行5次

我個人覺得這更容易閱讀...

 $sql="
 SELECT c.* 
   FROM customer c 
   JOIN commsone_phonelines b 
     ON b.customer_seq = c.sequence
  WHERE b.phone_number                         LIKE '%{$_POST['search']}%' 
    AND ( c.company                            LIKE '%{$_POST['search']}%' 
       OR c.forename                           LIKE '%{$_POST['search']}%' 
       OR c.surname                            LIKE '%{$_POST['search']}%' 
       OR CONCAT_WS(' ',c.forename, c.surname) LIKE '%{$_POST['search']}%' 
       OR c.phone                              LIKE '%{$_POST['search']}%' 
       OR c.accountnumber                      LIKE '%{$_POST['search']}%' 
       OR c.customerid                         LIKE '%{$_POST['search']}%' 
       OR c.voip_account                       LIKE '%{$_POST['search']}%' 
       OR REPLACE(c.postcode,' ','')           LIKE '%{$_POST['search']}%'
        )
    AND c.resellerid = '' 
  ORDER 
     BY company ASC";

....我只需要從客戶表中回顯信息。

然后僅選擇客戶表的列。

$sql="SELECT c.* from customer c JOIN commsone_phonelines b where b.phone_number LIKE '%".$_POST["search"]."%' AND ";

其余查詢保持不變。

編輯

 $sql="SELECT DISTINCT c.col1,c.col2,c.col3 from customer c JOIN commsone_phonelines b where b.phone_number LIKE '%".$_POST["search"]."%' AND ";

暫無
暫無

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

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