2013-08-02 15 views
0

請在此查詢此查詢,以便從數據庫中提取一些行。修改查詢以便獲取請求的值

$rs = mysql_query("SELECT u.*, SUM(c.ts) AS total_sum1, SUM(m.bv) AS total_sum 
FROM users u 
LEFT JOIN 
(SELECT user_id ,SUM(points) AS ts FROM coupon GROUP BY user_id) c 
ON u.user_id like'%$search%' 
LEFT JOIN 
(SELECT user_id ,SUM(points) AS bv FROM matching GROUP BY user_id) m 
ON u.user_id=m.user_id 

GROUP BY u.user_id limit $offset,$rows"); 

我需要修改它,所以它只能查詢滿足此條件的行:

u.user_id like '%$search%' 

我應該在哪裏把上面的條件? 我試着添加一個AND運算符,但它仍然不會給出一行,因爲user_id的彼此不同。

感謝

+0

嗯,其中userid LIKE '%$搜索%'?請注意,這不能使用索引 – Strawberry

+0

也許你可以告訴你實際上試圖查詢什麼。在最後一個「GROUP BY」之前添加'WHERE u.user_id LIKE'%$ search%''似乎是要做的事情。 – fejese

回答

0

你需要爲了加入WHERE條款補充一點情況:

$rs = mysql_query("SELECT u.*, SUM(c.ts) AS total_sum1, SUM(m.bv) AS total_sum 
FROM users u 
LEFT JOIN 
(SELECT user_id ,SUM(points) AS ts FROM coupon GROUP BY user_id) c 
ON u.user_id like'%$search%' 
LEFT JOIN 
(SELECT user_id ,SUM(points) AS bv FROM matching GROUP BY user_id) m 
ON u.user_id=m.user_id 
WHERE u.user_id like '%$search%' 
GROUP BY u.user_id limit $offset,$rows"); 

旁註:

  • mysql_*庫已過時,可以考慮升級到現代API,例如PDO或MySQLi
  • 準備語句的使用使用綁定參數優先將變量連接到SQL中。預先準備的語句更安全,更易於使用,因爲您不必擔心逃跑。
0

你可以試試這個SQL。(我不知道PHP)

SELECT 
     u.*, 
     SUM(c.points) AS total_sum1, 
     SUM(m.points) AS total_sum 
FROM users u 

INNER JOIN coupon c ON u.user_id=m.user_id 
INNER JOIN matching m ON u.user_id=m.user_id 

WHERE u.user_id like '%$search%' 
GROUP BY u.user_id limit $offset,$rows" ;