Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. DECLARE @warehouse INT;
  2. DECLARE @category VARCHAR(50);
  3. DECLARE @last_sync DATETIME;
  4.    
  5. SET @warehouse = 1;
  6. SET @category = '9';
  7. SET @last_sync = '2013-01-16 11:19:33.290';
  8.  
  9. WITH FiltredVariants(variant_id) AS
  10. (
  11.     SELECT
  12.         variant_id
  13.     FROM (
  14.         SELECT  
  15.         variant.id AS variant_id,
  16.         -- Conditions
  17.         C1 = CASE WHEN (spec.netto_price > 50) THEN 1 ELSE 0 END, -- Droższe niż 50 PLN
  18.         C4 = CASE WHEN (variant.quantity > 1) THEN 1 ELSE 0 END, -- Ilość w magazynie > 1
  19.         C2 = CASE WHEN (v2i.type = 3 AND v2i.remote_collection_id = '7533') THEN 1 ELSE 0 END,-- Kolor: Czarny
  20.         C5 = CASE WHEN (v2i.type = 3 AND v2i.remote_collection_id = '7528') THEN 1 ELSE 0 END,-- Kolor: Czerwony
  21.         C3 = CASE WHEN (v2i.type = 4 AND v2i.remote_collection_id = '113493') THEN 1 ELSE 0 END,-- Rozmiar: M
  22.         C6 = CASE WHEN (v2i.type = 4 AND v2i.remote_collection_id = '113492') THEN 1 ELSE 0 END-- Rozmiar: L
  23.        
  24.         FROM xxxx_product_variant AS variant
  25.         INNER JOIN xxxx_product_has_collection_item AS prod2cat ON (prod2cat.warehouse_id = @warehouse) AND (prod2cat.type = 1) AND (prod2cat.remote_collection_id = @category)
  26.         INNER JOIN xxxx_product AS product ON (product.warehouse_id = @warehouse) AND (product.remote_product_id = prod2cat.remote_product_id)
  27.         INNER JOIN xxxx_product_specify AS spec ON (spec.company_id = 1) AND (spec.warehouse_id = @warehouse) AND (spec.remote_product_id = prod2cat.remote_product_id) AND (spec.variant_id = variant.id)
  28.         INNER JOIN xxxx_variant_has_item AS v2i ON (v2i.warehouse_id = @warehouse) AND (v2i.variant_id = variant.id) AND (v2i.remote_product_id = prod2cat.remote_product_id)
  29.         INNER JOIN xxxx_collection_item AS property ON (property.warehouse_id = @warehouse) AND (property.type = v2i.type) AND (property.remote_collection_id = v2i.remote_collection_id)
  30.  
  31.         WHERE variant.remote_product_id = prod2cat.remote_product_id
  32.           AND (variant.update_date  > @last_sync OR variant.date  > @last_sync OR
  33.                product.update_date  > @last_sync OR product.date  > @last_sync OR
  34.             -- spec.update_date     > @last_sync                               OR
  35.                property.update_date > @last_sync OR property.date > @last_sync OR
  36.                v2i.update_date      > @last_sync OR v2i.date      > @last_sync OR
  37.                prod2cat.update_date > @last_sync OR prod2cat.date > @last_sync)
  38.     )
  39.     AS Conditions
  40.     GROUP BY variant_id
  41.    
  42.     HAVING   MAX(C1) = 1
  43.         AND  MAX(C4) = 1
  44.         AND (MAX(C2) = 1 OR MAX(C5) = 1)
  45.         AND (MAX(C3) = 1 OR MAX(C6) = 1)
  46. )
  47.  
  48. SELECT
  49.     variant.remote_product_id AS product_id,
  50.     variant.id AS variant_id,
  51.     product.name,
  52.     product.description,
  53.     variant.quantity,
  54.     spec.netto_price,
  55.     variant.weight,
  56.     variant.ean13,
  57.     product.vat,
  58.     product.is_active AS product_active,
  59.     variant.is_active AS variant_active,
  60.  
  61.     v2i.remote_collection_id AS property_id,
  62.     v2i.type AS property_type,
  63.     property.name AS property_name,
  64.     property.value AS property_value,
  65.     property.unit AS property_unit,
  66.  
  67.     manufacturers.remote_collection_id AS manufacturer_id,
  68.     manufacturers.name AS manufacturer_name,
  69.     manufacturers.image_id AS manufacturer_image_id
  70.  
  71.     FROM FiltredVariants
  72.     INNER JOIN xxxx_product_variant AS variant ON (variant.id = FiltredVariants.variant_id)
  73.     INNER JOIN xxxx_product_has_collection_item AS prod2cat ON (prod2cat.warehouse_id = @warehouse) AND (prod2cat.type = 1) AND (prod2cat.remote_collection_id = @category)
  74.     INNER JOIN xxxx_product AS product ON (product.warehouse_id = @warehouse) AND (product.remote_product_id = prod2cat.remote_product_id)
  75.     LEFT JOIN xxxx_product_specify AS spec ON (spec.company_id = 1) AND (spec.warehouse_id = @warehouse) AND (spec.remote_product_id = prod2cat.remote_product_id) AND (spec.variant_id = variant.id)
  76.     LEFT JOIN xxxx_variant_has_item AS v2i ON (v2i.warehouse_id = @warehouse) AND (v2i.variant_id = variant.id) AND (v2i.remote_product_id = prod2cat.remote_product_id)
  77.     INNER JOIN xxxx_collection_item AS property ON (property.warehouse_id = @warehouse) AND (property.type = v2i.type) AND (property.remote_collection_id = v2i.remote_collection_id)
  78.    
  79.     LEFT JOIN xxxx_product_has_collection_item AS prod2mf ON (prod2mf.warehouse_id = @warehouse) AND (prod2mf.type = 5) AND (prod2mf.remote_product_id = variant.remote_product_id)
  80.     LEFT JOIN xxxx_collection_item AS manufacturers ON (manufacturers.warehouse_id = @warehouse) AND (manufacturers.type = 5) AND (manufacturers.remote_collection_id = prod2mf.remote_collection_id)
  81.  
  82.     ORDER BY product_id, variant_id;