1

私は次の(短縮されたクエリ)を持っています:

SELECT 
    `Statistics`.`StatisticID`,
    COUNT(DISTINCT `Flags`.`FlagType`) AS `FlagCount`
FROM `Statistics`
LEFT JOIN `Flags` ON `Statistics`.`StatisticID` = `Flags`.`StatisticID`
WHERE `FlagCount` = 0
GROUP BY `Statistics`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

今、どちらもFlagCount = 0節でCOUNT(Flags.FlagType)働いていません。WHEREa を使用することを考えましたSETが、それをクエリに追加する方法がわかりません。何か案は?

ありがとう、

4

4 に答える 4

5

を使用しHAVING COUNT(DISTINCT Flags.FlagType) = 0ます。

于 2008-11-23T11:22:37.167 に答える
2

HAVING が機能しない場合は、サブクエリを試すことができます。

SELECT 
    `Statistics`.`StatisticID`,
    COUNT(DISTINCT `Flags`.`FlagType`) AS `FlagCount`
FROM `Statistics`
    LEFT JOIN `Flags` ON `Statistics`.`StatisticID` = `Flags`.`StatisticID`
WHERE `Statistics`.`StatisticID`
  IN (SELECT `Flags`.`StatisticID` 
      FROM `Flags`
      HAVING COUNT(DISTINCT `Flags`.`FlagType`) <= 3
      GROUP BY `Flags`.`StatisticID`
  )
GROUP BY `Statistics`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10
于 2008-11-23T12:40:17.570 に答える
0

これを試して:

SELECT 
    `Statistics`.`StatisticID`,
    COUNT(DISTINCT `Flags`.`FlagType`) AS `FlagCount`
FROM `Statistics`
LEFT JOIN `Flags` ON `Statistics`.`StatisticID` = `Flags`.`StatisticID`
                     And `FlagCount` = 0
GROUP BY `Statistics`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10
于 2008-11-23T11:29:02.283 に答える
0

@eed3si9n

これは部分的に機能しますが、機能しないように見える <= 3 にする必要があります。

また、HAVING句は最後に実行されるため、必要な数の結果が返されません (によって設定されLIMITます)。WHERE代わりに節でこれを行う方法はありますか?

于 2008-11-23T12:04:35.177 に答える