© Copyright 2024. Powered by Yasin Kuyu.

Version

© Copyright 2025

Local Time

Go back

MySQL Join Not Equal Sorunu

Join ile != ve <> karşılaştırma operatörleri kullanırken benim sık karşılaştığım sorunlardan biri. Dikkatinizden kaçıyorsa çözmek için uzun süre çaba harcayabilirsiniz.

Çözümü basit aslında. Karşılaştırma yapılacak Field’a varsayılan (dafault) değer atamak. Eğer kıyaslama yapılan alan boşsa (NULL) bu sorun oluşuyor.

İncelemek isteyenler olursa diye karşılaştığım örneği direkt ekledim.

 

 

Aşağıdaki örnekte purchase_receivings tablosu ile purchase_transactions tablolarını birleşiyor. purchase_transactions tablosunda status_transaction durumu cancelled değilse son row birleşiyor. status_transaction alanı NULL ise field cancelled değilse bile birleşme gerçekleşmiyor.

SELECT *
FROM `purchase_receivings`
JOIN `stock_orders` ON `stock_orders`.`id` = `purchase_receivings`.`order_item_id`
JOIN `purchase_orders` ON `purchase_orders`.`id` = `purchase_receivings`.`purchase_order_id`
LEFT JOIN `purchase_transactions` ON `purchase_transactions`.`id` = (
SELECT MAX(PT2.id)
FROM purchase_transactions AS PT2
WHERE PT2.purchase_receiving_id = purchase_receivings.id AND `PT2`.`status_transaction` <> 'cancelled' AND `PT2`.`deleted` IS NULL)
WHERE `purchase_receivings`.`deleted` IS NULL
ORDER BY `purchase_receivings`.`id` DESC

 

 

 

 

45 Views
Share this

No comments

Be the first to comment.

Leave a comment: