0

ほぼ完成したいくつかのテーブルに対して、かなり複雑なクエリを実行しています。最後の側面には、アイテムが受け取った入札数の集計が含まれますが、特定のセクションのすべてのアイテムに対してこれを行っています. クエリに集計 (/* */) を追加しようとすると、1 行しか返されないことを除いて、クエリは正常に機能します。それを読むと、サブクエリが必要なように見えますが、これについてどうすればよいか完全にはわかりません。これまでのクエリは次のとおりです。

SELECT s.id as section_id, s.name as section, i.id as item_id, 
i.title as item_title, item.location_id as item_location_id,
i.slug as item_slug, i.description as item_description, 
i.price as item_price, UNIX_TIMESTAMP(i.date_added) as item_date_added, 
c.id, c.city, c.particular_id, p.id, p.particular /*,COUNT(o.i_id) as interest*/

FROM section as s
INNER JOIN item as i
ON s.id = i.section_id
INNER JOIN city as c
ON i.location_id = c.id
INNER JOIN particular as p
ON c.particular_id = p.id

/*LEFT JOIN offer as o
ON o.job_id = i.id*/

WHERE s.id = 2

このコードは、/* */ コードが導入されるまで期待していたすべての行を返すという点で機能しますが、現在は 1 行のみを返します。

あなたが私に与えることができる助けをいただければ幸いです

ありがとう

ジョニー

4

2 に答える 2

3

集計を行う場合は、group by が必要です。たとえば、次のようになります。

     SELECT s.name, COUNT(i.id)
       FROM section as s
 INNER JOIN item as i
   GROUP BY s.name

セクション名とそこで見つかったアイテムの数を返します。

于 2013-04-09T03:16:50.997 に答える