データベースにリストされているビールを検索し、ユーザーがこれらのビールを自分のデータベースに追加したり、評価したり、コメントなどを追加したりできるようにするモバイルアプリケーションの PHP 準備ステートメントを作成しています。
ビール テーブルからすべてを選択し、myBeers テーブルをチェックして、そのビールがリストされているかどうかの平均を取得する 1 つの検索関数を用意したいと考えています。
結合では、beerID は両方のテーブルに共通のフィールドです。
データベースには、使用する必要がある 2 つのテーブルがあります。1 つは、beerID、name、abv、abu、srm など、さまざまなビールの 5000 レコードを含むビール テーブルです。検索できるようにする必要があります。入力のように、このテーブルの場合。次のようなクエリがあります。
SELECT *
FROM beers
WHERE name LIKE :name
もう 1 つは myBeers テーブルで、userID と beerID、評価とコメントの列があります。次のようなクエリがあります。
SELECT AVG(rating) as ratingAverage
FROM myBeers
WHERE beerID = :beerID'
これらを 1 つのステートメントに結合して、beers テーブルで何かのような名前を検索し、myBeers テーブルから平均を引き出します。平均がない場合は、null ではなく 0 として表示されるようにします。
これまでのところ、結合とサブクエリを試してみましたが、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')
そして、私は何も得られません。
誰かが私を助けてくれれば幸いです。私はすべてを含めようとしました。ご協力いただきありがとうございます!