2012-01-17 50 views
2

我已经产生了以下查询。从db加入两个字符串在一起

SELECT  t.id AS playerid, 
      dp.first_name, 
      dp.surname 
FROM   ".TBL_FOOT_CAREER_TEAMS." t 
    INNER JOIN ".TBL_FOOT_CAREER_DB_PLAYERS." dp 
    ON   dp.id = t.playerid 
WHERE  t.careerid = '$career' 
    AND  (dp.first_name LIKE '%{$keyword[$i]}%') 
    OR  (dp.surname LIKE '%{$keyword[$i]}%') 
    OR  (`dp.first_name + dp.surname` LIKE '%{$keyword[$i]}%') 

数据库中有两列。 first_namesurname。正如你所看到的,我试图检查关键字是否在任何一列中。我也尝试将它们制作成一个完整的名称,并检查搜索词是否也是。

我得到一个错误,所以我可以认为这不是这样做的方式!

有人能帮助:)

感谢

回答

0
SELECT t.id AS playerid, 
     dp.first_name, 
     dp.surname 
FROM ".TBL_FOOT_CAREER_TEAMS." t 
      INNER JOIN ".TBL_FOOT_CAREER_DB_PLAYERS." dp 
      ON dp.id = t.playerid 
WHERE (t.careerid = '$career') AND 
     (
     (dp.first_name LIKE concat('%', $keyword[$i], '%')) OR 
     (dp.surname LIKE concat('%', $keyword[$i], '%')) OR 
     (CONCAT(dp.first_name, ' ',dp.surname) LIKE concat('%', $keyword[$i], '%')) 
    ) 

UPDATE

因为你concactenating的名字,你可以这样:

SELECT t.id AS playerid, 
     dp.first_name, 
     dp.surname 
FROM ".TBL_FOOT_CAREER_TEAMS." t 
      INNER JOIN ".TBL_FOOT_CAREER_DB_PLAYERS." dp 
      ON dp.id = t.playerid 
WHERE (t.careerid = '$career') AND 
     ( 
     CONCAT(dp.first_name, ' ',dp.surname) LIKE concat('%', $keyword[$i], '%') 
    ) 
0
... 
OR CONCAT(dp.first_name, dp.surname) LIKE '%{$keyword[$i]}%'