0

product_to_category p2c次の 2 つの列が含まれます。

category_id product_id

このテーブルには、製品ごとに複数のエントリが含まれている可能性があるためMAX (category_id)、必要です。

category_to_google c2g次の 2 つの列が含まれます。

category_id google_id

google_category gc次の 2 つの列が含まれます。

google_id name

したがって、p2c から MAX(category_id) を取得します。

get google_id FROM c2g WHERE category_id = 選択された category_id,

最後に GC から名前を取得します WHERE google_id = 選択した google_id

うまく結合できないようです。

答え:

$query = $this->db->query("
    SELECT name FROM {$this->prefix}google_category 
    WHERE google_id = (
        SELECT google_id FROM {$this->prefix}category_to_google 
        WHERE category_id = (
            SELECT MAX(category_id) FROM {$this->prefix}product_to_category 
            WHERE product_id = '" . (int)$product_id . "'
        )
    )");

これは機能します、RCに感謝します。

これを適切な結合にすることは可能ですか?既存のクエリにネストする必要がありますか?

4

2 に答える 2

2

あなたが望むものを手に入れたかどうかはわかりませんが、次のように思います:

SELECT name FROM gc WHERE google_id = (
    SELECT google_id FROM c2g WHERE category_id = (
        SELECT MAX(category_id) FROM p2c
    )
);

あなたが探しているものかもしれません。

于 2013-08-20T11:17:34.763 に答える
0

たぶん、このようなもの...

 SELECT name 
   FROM google_category c
   JOIN category_to_google cg
     ON cg.google_id = c.google_id
   JOIN (SELECT MAX(category_id) max_category_id 
           FROM product_to_category 
          WHERE product_id = $product_id) x
             ON x.max_category_id = cg.category_id 
于 2013-08-20T11:36:13.090 に答える