0

クエリは次のとおりです。

SELECT tbl_product.id, tbl_productspecification.id AS specificationId,
            tbl_product.ProductId, tbl_seller.CompanyName, tbl_product.ProductName, tbl_product.Description, mst_Categories.id AS 'Category',
            tbl_productspecification.RetailPrice, tbl_productspecification.SalePrice,
            tbl_product.image, tbl_productspecification.Discount, tbl_product.EndTime, tbl_product.Seller_Id
            FROM tbl_product
            LEFT OUTER JOIN tbl_seller ON tbl_seller.SelId = tbl_product.Seller_Id
            LEFT OUTER JOIN mst_Categories ON (mst_Categories.id = tbl_product.Category OR mst_Categories.id = tbl_product.SubCategory)
            LEFT OUTER JOIN tbl_productspecification ON tbl_productspecification.ProductId = tbl_product.ProductId
            LEFT OUTER JOIN mst_image ON mst_image.Product = tbl_product.ProductId
            LEFT OUTER JOIN tbl_dealinterest ON tbl_dealinterest.ProductId = tbl_product.ProductId
            where tbl_product.Active='y' and tbl_product.StartTime <= '".date("Y-m-d H:i:s")."' and tbl_product.EndTime>'".date("Y-m-d")." 06:00:00'
            ".$subquery." ".$groupby;

tbl_dealinterestテーブルにはいくつかのフィールドがあります。

[BuyerId] [ProductId] [Active] 

tbl_dealinterestその一致[BuyerId] [ProductId]にあり[Active]、等しくないレコードを除外する必要がありますn

いくつか試してみましたが、すべての製品がリストされているわけではありませんtbl_dealinterest。誰かがオプションを選択した場合にのみ、それが入力されます。

4

1 に答える 1

1

これにより、tbl_dealinterest 内の一致するレコードが除外されます。これは、レコードが存在する場合、tbl_dealinterest.BuyerId が NULL になることはないと想定しています。

tbl_dealinterest テーブルへの左結合は、一致がない場合、tbl_dealinterest テーブル内のすべてのフィールドに対して NULL 値を返します。where句の「tbl_dealinterest.BuyerId IS NULL」は、一致を除外します。

SELECT tbl_product.id, tbl_productspecification.id AS specificationId,
            tbl_product.ProductId, tbl_seller.CompanyName, tbl_product.ProductName, tbl_product.Description, mst_Categories.id AS 'Category',
            tbl_productspecification.RetailPrice, tbl_productspecification.SalePrice,
            tbl_product.image, tbl_productspecification.Discount, tbl_product.EndTime, tbl_product.Seller_Id
            FROM tbl_product
            LEFT OUTER JOIN tbl_seller ON tbl_seller.SelId = tbl_product.Seller_Id
            LEFT OUTER JOIN mst_Categories ON (mst_Categories.id = tbl_product.Category OR mst_Categories.id = tbl_product.SubCategory)
            LEFT OUTER JOIN tbl_productspecification ON tbl_productspecification.ProductId = tbl_product.ProductId
            LEFT OUTER JOIN mst_image ON mst_image.Product = tbl_product.ProductId
            LEFT OUTER JOIN tbl_dealinterest ON tbl_dealinterest.BuyerId = tbl_product.BuyerId AND tbl_dealinterest.ProductId = tbl_product.ProductId AND tbl_dealinterest.active <> 'n'
            where tbl_product.Active='y' and tbl_product.StartTime <= '".date("Y-m-d H:i:s")."' and tbl_product.EndTime>'".date("Y-m-d")." 06:00:00'
            AND tbl_dealinterest.BuyerId IS NULL
            ".$subquery." ".$groupby;
于 2012-11-06T20:04:49.220 に答える