sql >> Database >  >> RDS >> Sqlserver

Alternatief voor Cartesiaans en Cross Join

Volgens een strikt definitieniveau is het niet mogelijk. Waarom? Omdat de definitie van een Cartesiaans product is precies wat u beschrijft (de term "Cartesiaanse join" wordt niet vaak gebruikt, maar is een synoniem voor "Cartesiaans product"). Daarom implementeert elke methode die u gebruikt deze functionaliteit. Normaal gesproken wordt deze functionaliteit geïmplementeerd met behulp van CROSS JOIN (en ik geef met tegenzin toe, soms met behulp van , ).

Je zou kunnen zeggen "voeg 1 toe aan een getal zonder + 1 te doen" ". Iemand anders komt langs en zegt "gebruik + 2 - 1 ". Nou, dat is één toevoegen, maar gewoon twee bewerkingen gebruiken in plaats van één.

Als u een Cartesiaans product wilt, maar u wilt geen gebruik maken van de CROSS JOIN operator, de meest typische methode gebruikt ON 1=1 :

select t1.*, t2.*
from t1 join
     t2
     on 1 = 1;


  1. Hoe records in te voegen in variabelen van cte in orakel?

  2. Som van tijdsverschil tussen rijen

  3. waarom zou ik de first()-methode kunnen gebruiken als mijn resultaatset-type alleen forward is?

  4. Kan bestand of assembly niet laden 'System.Data-fout bij het implementeren van de applicatie op de productiedatabase