2

私は買い物かごのクラスを作成しようとしていて、買い物かごの内容で出力しようとするとレンガの壁にぶつかりました。

ユーザーバスケット情報は、次の構造のテーブルに格納されます。

     CREATE TABLE IF NOT EXISTS basket (
            `ID` int PRIMARY KEY AUTO_INCREMENT,
            `ProductID` int,
            `Quantity` int,
            `OptionID` int,
            `Cookie` varchar(40)
            ;

ここで、Cookieフィールドは、Cookieに保存されているユーザーの一意の識別子です。

私の製品テーブルは次のように構成されています。

    CREATE TABLE IF NOT EXISTS products (
            ID int PRIMARY KEY AUTO_INCREMENT,
            Title varchar(200),
            Description text,
            Specification text,
            Price decimal(10,2),
            CategoryID int,
            Weight int,
            Options text,
            OptionValues text,
            OptionCost text,
            Discount int(2),
            Featured boolean,
            Images text,
            Stock int,
            Related text,
            Offer boolean,
            OfferDetails boolean,
            Language int
            ;

やりたいことバスケットからアイテムを選択し、それぞれの製品のタイトルと価格情報を製品テーブルから取得します。

したがって、本質的には、productIDを使用して次の2つのテーブルをリンクするSQLステートメントが必要です。

ProductIDバスケットテーブルから

バスケットテーブルからの数量

タイトル製品表から

説明製品表から

製品表からの価格

以前、バスケット配列をループして、現在の製品テーブルでクエリを実行することで同様のことを実行しましたProductIDが、確かにこれは1つのクエリで実行できますか?

4

2 に答える 2

2

これを試して:

SELECT
  b.ProductID,
  b.Quantity,
  p.Title,
  p.Description,
  p.price
From basket b
INNER JOIN products p ON b.ProductID = p.Id;

これらをお読みください:

于 2012-11-28T11:18:14.073 に答える
0
SELECT b.ProductID, b.Quantity, p.Title, p.Description, p.Price 
FROM basket b 
     LEFT JOIN products p ON (b.ProductID = p.ID);

また、これを覚えておいてください:

INNER JOINは、両方のテーブルに存在しないレコードを結果セットから除外します。

LEFT JOINには、クエリが2番目のテーブルからnull値を除外しないと仮定して、最初のテーブルのすべてのレコードと2番目のテーブルの一致するすべてのレコードが含まれます。

于 2012-11-28T11:18:24.417 に答える