1

非常に古い mysql スキルに戻ると、次のクエリが必要です。

私は2つのテーブルを持っています

1 つは、列項目名、項目番号を持つ製品と呼ばれるすべての項目のテーブルです。

2 列のアイテム番号、日付を含む購入アイテムのテーブルです。

結果として必要なのはこのようなものです

ITEM-----PURCHASED
item1-------0 
item2-------0
item3-------0
item4-------1  This item purchased
item5-------0
item6-------1  This item purchased
item7-------0
item8-------0
.
.
.
itemX-------0

出力にはすべてのアイテムが含まれ、アイテムが購入アイテム テーブルに存在する場合は購入列に 1 が含まれ、購入されていない場合は 0 が含まれます。

これが簡単な場合は申し訳ありませんが、私の脳は現在メルトダウンモードにあり、このようなものが必要になるのは久しぶりです

4

1 に答える 1

4

aLEFT JOINと aCASEを使用して、結合されたテーブルでテストするとNULL、それに応じてゼロまたは 1 を返すことができます (私は使用しましたが、MySQLCASEでも行うことができます)。IFNULL()

SELECT
  products.name, 
  products.item_num
  /* items that have no related rows in `purchased` will be NULL */
  CASE WHEN purchased.item_num IS NULL then 0 ELSE 1 END AS purchased
  /* Could also just do:
       (purchesd.item_num IS NULL) AS purchased
     because MySQL will return a 0 or 1 from the boolean condition, 
     but the CASE is more portable */
FROM 
  products
  LEFT JOIN purchased ON products.item_num = purchased.item_num
于 2012-11-04T21:45:44.110 に答える