3

次の例のような名前を持つ 2 つの類似した名前の製品を含む製品データベースの検索クエリを作成する必要があります。

「Widget Simulator と ... の仮想セミナー」

「…のウィジェットシミュレーター」

現在、誰かが「Widget Simulator」を検索すると、両方のタイプの製品がリストに表示されます。「Virtual Seminar」という単語を含む製品を除外する「Widget Simulator not:Virtual Seminar」に似たクエリを作成しようとしています。

既存のクエリは次のようになります。

SELECT COUNT(*) AS `numrows` 
FROM (`content_product`) 
JOIN `content` ON `content`.`content_id` = `content_product`.`content_id` 
WHERE `content`.`version_status_id` = 28 
AND `content`.`status` = 11
AND `name`  LIKE '%widget%simulator%'

次のことを試しましたが、うまくいきません。

SELECT COUNT(*) AS `numrows` 
FROM (`content_product`) 
JOIN `content` ON `content`.`content_id` = `content_product`.`content_id` 
WHERE `content`.`version_status_id` = 28 
AND `content`.`status` = 11
AND `name`  LIKE '%widget%simulator%'
AND `name` NOT LIKE '%virtual%seminar%'

これはうまくいきません。なぜうまくいかないのか理解できたと思いますが、これを行う方法を教えてくれるものはここでも他の場所でも見つかりません。

要約すると、名前に「Widget Simulator」が含まれる製品をすべて表示し、「Virtual Seminar」を含む製品は除外します。

助けやアドバイスをありがとう。

4

1 に答える 1

0

サブクエリを使用してこれを使用する必要があると私が思う個人的な意見のみです。最初に仮想セミナーを含むすべての製品を削除してから、次のようにウィジェットシミュレーターを含む残りを選択します。

SELECT COUNT(*) AS `numrows` 
  FROM (`content_product`) 
  JOIN `content` ON `content`.`content_id` = `content_product`.`content_id` 
 WHERE `content`.`version_status_id` = 28 
   AND `content`.`status` = 11
   AND `name`  LIKE '%widget%simulator%'
   AND `content_product.id` NOT IN (
           SELECT `content_product.id` 
             FROM `content_product` 
            WHERE `name` LIKE '%virtual%seminar%'
       )
于 2012-12-04T05:08:17.467 に答える