2011-06-20 9 views
1

誰かが(私が思うように)かなり正直なクエリでなければなりませんが、私は何時間も私の髪を引き裂いています。サブクエリの `count`

私は2つのテーブル 'listing'と 'inquiry'を持っています。

私は受け取った質問の数と並んで、一連のリストを返したいと思います。

リスト1(5件の問い合わせ) リスト2(3件の問い合わせ)これまでのところ、私が持っている リスト7(2照会)

SELECT l.listing_id, COUNT(e.enquiry_id) AS num_enquiries 
FROM listings AS l LEFT JOIN enquiries AS e ON l.listing_id = e.enquiry_itemid 
WHERE e.enquiry_itemtype='listing' AND enquiry_datesent >= '2011-01-1 0:01' AND enquiry_datesent <= '2011-12-31 23:59' 
HAVING num_enquiries > 0 
ORDER BY listing_title_e 

しかし、これは1つのだけのリスト行を返しますすべての照会の合計数、たとえば

リスト1(10件の問い合わせ)

あなたが見ることができるように、お問い合わせは、た項目タイプ「リスト」を持つことでの掲載と関連し、listingidのマッチングItemIDをしています。

誰でもお手伝いできますか?どうもありがとう!

答えて

1
SELECT l.listing_id, COUNT(e.enquiry_id) AS num_enquiries 
FROM listings AS l JOIN enquiries AS e ON l.listing_id = e.enquiry_itemid AND e.enquiry_itemtype='listing' AND enquiry_datesent >= '2011-01-1 0:01' AND enquiry_datesent <= '2011-12-31 23:59' 
GROUP BY l.listing_id 
ORDER BY listing_title_e 

が不足していない限り、することができます - あなたはすべての問い合わせの数を取得し、なぜあなたが使用しているnum_enquiries> 0を有する参加左 - JOINのと同じことを行います。お問い合わせの条件はON部でよく見えます

+0

解決策をご提供いただき、ありがとうございます。 – Nick

3

l.listing_idでグループ化していません。

また、LEFT JOINを選択してから、右側の表の空の行を除外することはほとんど意味がありません。あなたは、単にINNER JOIN私はあなたがグループ化を忘れて何か