Alt sorguyu select deyiminden nasıl kaldırabilirim?

0

Soru

Alt sorguyu orijinal SELECT deyiminden kaldırmak için yardıma ihtiyacım var. Böyle bir şey mümkün mü? Bunun gibi sorguları nihayetinde SELECT ifadelerinde alt sorgulara izin vermeyen Denodo/VQL'YE taşımak için buna ihtiyacım var (ancak CTE/WITH ve FROM/WHERE alt sorgularına izin veriyor).

select case when material in (
    select material
    from schema.material_table
    where old_material like '%55AD%'
  ) then 'Found'
  else 'Not Found'
end
from schema.material_table;
1

En iyi cevabı

2

Birkaç seçenek görebiliyorum. En doğrudan çeviri şöyle görünüyor:

SELECT CASE
         WHEN m2.MATERIAL IS NOT NULL THEN 'Found'
         ELSE 'Not Found'
       END AS IZZIT_THERE
  FROM SCHEMA.MATERIAL_TABLE m2
  RIGHT OUTER JOIN SCHEMA.MATERIAL_TABLE m1
    ON m1.MATERIAL = m2.MATERIAL
  WHERE m1.OLD_MATERIAL LIKE '%55AD%'

ama bir kullanımı RIGHT OUTER JOIN yabancı olabilir. Daha tanıdık olana geçmek için LEFT OUTER JOIN sorgudaki tabloların konumunu tersine çevirmemiz ve koşulların nasıl sunulduğunu değiştirmemiz gerekiyor:

SELECT CASE
         WHEN m1.MATERIAL IS NOT NULL THEN 'Found'
         ELSE 'Not Found'
       END AS IZZIT_THERE
  FROM SCHEMA.MATERIAL_TABLE m1
  LEFT OUTER JOIN SCHEMA.MATERIAL_TABLE m2
    ON m2.MATERIAL = m1.MATERIAL
  WHERE m1.OLD_MATERIAL LIKE '%55AD%'

Takma adları aynı tuttum, böylece sorguda nasıl hareket ettiklerini görebilirsiniz. Her iki sorguda da m1 birincil tablo, yani veri sağlaması gereken tablodur. m2 ikincil veya" isteğe bağlı " tablodur-birincil tabloyla eşleşen verilere sahip olabilir veya olmayabilir.

Şahsen, alt sorgular yerine birleştirmeleri tercih ederim, çünkü onları anlamak daha kolay buluyorum, ancak YMMV.

2021-11-24 02:01:18

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................