Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用左键连接另一个表的Mysql全文搜索_Mysql_Sql_Full Text Search - Fatal编程技术网

用左键连接另一个表的Mysql全文搜索

用左键连接另一个表的Mysql全文搜索,mysql,sql,full-text-search,Mysql,Sql,Full Text Search,我正在准备一个MySQL全文搜索应用程序 我有两张表:书籍和价格。执行搜索时,我需要从两个表中获取数据 书籍模式: id,name,title,active 1,Alex, Alex Bio,1 2,Bob, Bob Bio, 1 mysql fulltext index(name,title) id,product_id,price 1,1,500 2,1,600 3,1,700 4,2,300 5,2,400 6,2,500 Priceschema: id,name,title,act

我正在准备一个MySQL全文搜索应用程序

我有两张表:
书籍
价格
。执行搜索时,我需要从两个表中获取数据

书籍
模式:

id,name,title,active
1,Alex, Alex Bio,1
2,Bob, Bob Bio, 1

mysql fulltext index(name,title)
id,product_id,price
1,1,500
2,1,600
3,1,700
4,2,300
5,2,400
6,2,500
Price
schema:

id,name,title,active
1,Alex, Alex Bio,1
2,Bob, Bob Bio, 1

mysql fulltext index(name,title)
id,product_id,price
1,1,500
2,1,600
3,1,700
4,2,300
5,2,400
6,2,500
当我运行以下查询时,搜索工作正常,但我需要
price
;并且只有最低的
价格
应与
产品id
一起显示

以下是我的完整查询:

SELECT *,
  MATCH (name, title)
    AGAINST ('" . $search . "' IN BOOLEAN MODE) AS "high"
  FROM books
  WHERE MATCH (name, title) AGAINST ('" . $search . "' IN BOOLEAN MODE)
    AND active = 1
  ORDER BY high DESC;
预期产出:

id,name,title,price
1,Alex,Alex Bio,500
2,Bod,Bob Bio,300

只需将价格表连接到书籍,获取最低价格并添加group by子句:

SELECT books.id, name, title, min(p.price)
FROM books
INNER JOIN price p on p.product_id=books.id
WHERE MATCH (name,title) AGAINST ('" . $search . "' IN BOOLEAN MODE) AND active = 1
GROUP BY books.id, name, title
ORDER BY MATCH (name,title) AGAINST ('" . $search . "' IN BOOLEAN MODE) DESC

您需要一个联接才能执行此操作:

SELECT t1.id, t1.name, t1.title, COALESCE(t2.minPrice, 'NA') AS price
FROM books t1
LEFT JOIN
(
    SELECT product_id, MIN(price) AS minPrice
    FROM price
    GROUP BY product_id
) t2
    ON t1.id = t2.product_id
WHERE MATCH (name,title) AGAINST ('" . $search . "' IN BOOLEAN MODE) AND active = 1
ORDER BY MATCH (name,title) AGAINST ('" . $search . "' IN BOOLEAN MODE) DESC

向我们展示您的预期输出。只需与其他表连接即可。谢谢您的帮助。