0

結合されたままのピボット テーブルでカウントを取得し、ピボット テーブルで where 句を再度実行して、不要な残りを除外する方法はありますか?

以下は私がこれまでに持っているものです:

SELECT *
FROM 
      (
          SELECT COUNT(user_id) as Count
          FROM group_buys
      ) GroupBuy
      LEFT JOIN group_buy_users GroupBuysUser
          ON GroupBuysUser.group_buy_id = GroupBuy.id
WHERE GroupBuysUser.user_id = {$this->Auth->user('id')}

私は解決策を見つけました:

SELECT *
        FROM group_buys GroupBuy
        LEFT JOIN group_buy_users GroupBuysUser
        ON GroupBuysUser.group_buy_id = GroupBuy.id
        LEFT JOIN (
            SELECT group_buy_id, COUNT(user_id) as Count
            FROM group_buy_users
            GROUP BY group_buy_id
        ) GroupBuysUserCount
        ON GroupBuysUserCount.group_buy_id = GroupBuy.id
        LEFT JOIN group_buy_merchant_offers GroupBuysMerchantOffer
        ON GroupBuysMerchantOffer.group_buy_id = GroupBuy.id
        WHERE GroupBuysUser.user_id = {$this->Auth->user('id')}
        GROUP BY GroupBuy.id
        HAVING GroupBuy.expiry_date > NOW()
        ORDER BY GroupBuysMerchantOffer.bid_price ASC

基本的に、IDでグループ購入し、user_idが属するユーザーのwhere句ですでにカウントされているダミーテーブルをLEFT JOINして、重複を取り除くためにGroupbuy.idで再度グループ化する必要がありました。期限切れの古い groupbuys をすべて削除する必要があったため、有効期限を追加しましたが、これにより group_buy_users テーブルからグループ ユーザーの数が追加され、再び group_buy_users テーブルが追加され、他の詳細も取得できるようになりました。

4

0 に答える 0