मैं एक क्वेरी चलाने की कोशिश कर रहा हूं जहां मैं 2 मानों के बीच तिथियों का चयन करता हूं

OR ( `order_products`.`deleted_at` BETWEEN
                 '2021-01-01 00:00:00' AND '2021-07-28 23:59:59' )

लेकिन मुझे NULL मानों के साथ order_products एकत्र करने की भी आवश्यकता है।

क्या यह बिल्कुल संभव है, जैसे कि जब मैं a put डालता हूँ

OR `order_products`.`deleted_at` IS NULL

मेरे कोड में, ऐसा लगता है कि डेटाबेस में सब कुछ पूरी तरह से वापस आ गया है :-(

संदर्भ के लिए मेरा वर्तमान कोड है:

SELECT 
`orders`.`id`, 
`orders`.`reference`, 
`orders`.`order_date`, 
`orders`.`cancellation_date`,
 `order_products`.`description`, 
`order_products`.`st_code`, 
`order_products`.`supplier_stock_code`,
 `order_products`.`status`, 
`order_products`.`deleted_at`,
 `supplier`.`name`, 
 order_invoice.created_at AS credit_date, 
fitters.account_number AS fitter_account_number, 
fitters.name AS fitter 
FROM `order_products`
 LEFT JOIN `orders` ON (`orders`.`id` = `order_products`.`order_id`) 
LEFT JOIN `supplier` ON (`order_products`.`supplier_id` = `supplier`.`id`) 
LEFT JOIN `fitters` ON (`orders`.`fitter_id` = `fitters`.`id`) 
JOIN `order_invoice` ON (`order_invoice`.`order_id` = `orders`.`id`) 
WHERE `cancellation_date` IS null 
AND `cancellation_date` BETWEEN '2021-01-01 00:00:00' AND '2021-07-28 23:59:59'
 AND `order_invoice`.`status` = 'approved' 
OR (`order_products`.`deleted_at` BETWEEN '2021-01-01 00:00:00' 
OR `order_products`.`deleted_at` IS NULL
AND '2021-07-28 23:59:59') 
AND `order_products`.`product_type` = 'product' 
ORDER BY `orders`.`id` ASC
0
StuBlackett 28 जुलाई 2021, 12:10

2 जवाब

सबसे बढ़िया उत्तर

आपका सिंटैक्स बंद है। आप की जरूरत है:

WHERE order_products.deleted_at >= '2021-01-01' AND
      order_products.deleted_at <  '2021-07-29' OR
      order_products.deleted_at IS NULL

ध्यान दें कि मैंने दिनांक असमानताओं का उपयोग करके डेटाटाइम चेक लिखा है, जो मुझे क्लीनर लगता है। साथ ही, हमें यहां किसी अतिरिक्त कोष्ठक की आवश्यकता नहीं है क्योंकि AND की प्राथमिकता OR से अधिक है।

1
Tim Biegeleisen 28 जुलाई 2021, 09:18

कृपया जहां की स्थिति को बदलने का प्रयास करें जहां cancellation_date रिक्त है और cancellation_date '2021-01-01 00:00:00' और '2021-07-28 23:59:59' के बीच और order_invoice.status = 'स्वीकृत' या (order_products.deleted_at IS NULL या order_products.deleted_at '2021-01-01 00:00:00' और '2021-07-28 23:59 के बीच :59') और order_products.product_type = 'उत्पाद'

1
Rinkal Rohara 28 जुलाई 2021, 09:18