0

以下は、クエリを実行する必要がある 3 つのテーブルです。

r601_shoppingcart_carts
  cart_id          user_id          customize 
   10               65                 1
   11               78                 1
   12               78                 0

r601_shoppingcart_items:
cart_item_id   cart_id     sobipro_entry     
    5              10            87
   39              11           194
   40              11           140 
   38              12           126

r601_sobipro_field_data
fid                sid          baseData
 45                194          cg_0059
 45                140          cg_0094_4
 45                141          cg_0011_2

クエリの目的の結果は、特定のユーザー (user_id) カートの baseData (製品番号) を提供します (そのアイテム (製品) がカスタマイズ可能である場合)。

この場合、正しく取得されたデータは、user_id 78 がカートに次の 2 つのカスタマイズ可能なアイテムを持っていることを示しているはずです: cg_0059 cg_0094_4

前に、左側にある SELECT ステートメントをここに表示しました。次の SELECT ステートメントが、私が目指していたものを達成したことがわかりました。効率的な発言かどうかはわかりません。コメントをいただければ幸いです。

 SELECT
    r601_sobipro_field_data.baseData,
    r601_sobipro_field_data.sid,
    r601_shoppingcart_items.cart_id,
    r601_shoppingcart_carts.cart_id
 FROM
    r601_sobipro_field_data,
    r601_shoppingcart_items,
    r601_shoppingcart_carts
 WHERE
    r601_sobipro_field_data.fid = 45
 AND
    r601_sobipro_field_data.sid = r601_shoppingcart_items.sobipro_entry 
 AND
    r601_shoppingcart_items.cart_id = r601_shoppingcart_carts.cart_id
 AND
    r601_shoppingcart_carts.user_id = 78
 AND
    r601_shoppingcart_carts.customize = 1 

役立つメッセージを 1 つ受け取りました。ありがとう!

4

1 に答える 1

0

問題は次の行にあります。

$partNo = $sobiBaseData_rows[$i]->baseData;

クエリによって返される値は別の配列を返すため、$i 要素にアクセスすることはできません。

毎回返される値が 1 つだけの場合は、次のようにアクセスできます。

$partNo = $sobiBaseData_rows[0]->baseData;

複数の値が返された場合は、値をループして配列に格納できます。

于 2012-07-19T11:18:42.853 に答える