我正在为一个移动应用程序编写一个 PHP 准备语句,它将搜索数据库中列出的啤酒,并允许用户将这些啤酒添加到他们自己的数据库中,并对它们进行评分和添加评论等。
我希望有一个搜索功能,它将从 beers 表中选择所有内容,然后检查 myBeers 表以获取该啤酒是否列出的平均值。
在连接中,beerID 是两个表的公共字段。
我的数据库中有两张表需要使用:一张是 beer 表,有 5000 条各种啤酒的记录,包括 beerID、name、abv、abu、srm 等。我需要能够进行搜索对于该表,当它是 LIKE 输入时。我有一个看起来像这样的查询:
SELECT *
FROM beers
WHERE name LIKE :name
另一个是 myBeers 表,其中包含 userID 和 beerID 以及 rating 和 comments 列。我有一个看起来像这样的查询:
SELECT AVG(rating) as ratingAverage
FROM myBeers
WHERE beerID = :beerID'
我想将这些组合成一个语句,该语句将在 beers 表中搜索类似名称的名称,然后从 myBeers 表中提取平均值。如果没有平均值,那么我希望它显示为 0 而不是 null。
到目前为止,我已经尝试过加入和子查询——但是当我尝试使用 LIKE 选项时它们都卡住了。
我试过这个:
SELECT b.*, AVG(m.rating) AS avgRating
FROM beers b
INNER JOIN myBeers m
ON b.beerID = m.beerID
WHERE (SELECT name
FROM beers
WHERE name LIKE 'Hocus')
而我却一无所获。
如果有人可以帮助我,我将不胜感激。我试图包括所有内容。谢谢你的帮助!