简体   繁体   中英

Search query involving two tables in mysql

I have two tables, users and sales. sales.userId = user.id I am trying to use following query. To search parameters in both users and sales.

SELECT * FROM sales INNER JOIN users ON users.id = sales.userId WHERE 'users.fullname' like '%Cloud%' OR 'users.storename' like '%cloud%' order by sales.id DESC

No result is showing up. What could be wrong in query.

eg one user['fullname'] is CloudBuck Abc

if(isset($_GET["q"]) && $_GET["q"]!="")
{
    $q = trim($_GET["q"]);
    $where = "WHERE users.fullname like '%".$q."%' OR users.storename like '%".$q."%'";
}

$query = "SELECT * 
FROM sales 
INNER JOIN users ON users.id = sales.userId ".$where." order by sales.id DESC";

You are quoting the field names and this is not allowed, either use backticks if its a reserved word or do not use it.

SELECT * FROM sales 
INNER JOIN users ON users.id = sales.userId 
WHERE `users`.`fullname` like '%Cloud%' 
OR `users`.`storename` like '%cloud%' 
order by sales.id DESC
SELECT * FROM sales INNER JOIN users ON users.id = sales.userId
 WHERE (users.fullname like '%Cloud%' OR users.storename like '%cloud%') 
 order by sales.id DESC

Remove the single qoutes around the column names:

SELECT * 
FROM sales 
INNER JOIN users ON users.id = sales.userId 
WHERE users.fullname like '%Cloud%' OR users.storename like '%cloud%' order by sales.id DESC

Because mysql will use it as string if the single quote is set.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM