sql >> Database teknologi >  >> RDS >> Mysql

subsonic 2 join på flere kolonner

Med SubSonic 2 ud af æsken kan du ikke.

Når det er sagt, har du følgende alternativer:

Udvid SubSonic

Hvis du allerede er bekendt med SubSonic, kan du overveje at tilføje multi-column joins til selve SubSonic.

Brug visninger, lagrede procedurer, tabelfunktioner

Hvis du ikke vil rode med SubSonics-kode, skal du bruge visninger, lagrede procedurer og/eller tabelfunktioner i sql-serveren. SubSonic gør det nemt at få adgang til data fra visninger og lagrede procedurer.

Brug en InlineQuery

InlineQuery giver dig mulighed for at udføre enhver sql - hvis det er en mulighed at have bare sql i din kode.

Glædelig løsning med InlineQuery

Hvis du absolut vil oprette din forespørgsel med SubSonic, kan du prøve dette:

SqlQuery q = DB.Select()
  .From<TableA>()
  .CrossJoin<TableB>()
  .Where(TableA.YearColumn).IsEqualTo(0)
  .And(TableA.MonthColumn).IsEqualTo(0)
  .And(TableA.UseridColumn).IsEqualTo(0);

Byg SQL-sætningen, og erstat parameternavnene:

string s = q.BuildSqlStatement();
s = s.Replace(q.Constraints[0].ParameterName, TableB.YearColumn.QualifiedName);
s = s.Replace(q.Constraints[1].ParameterName, TableB.MonthColumn.QualifiedName);
s = s.Replace(q.Constraints[2].ParameterName, TableB.UserIdColumn.QualifiedName);

Brug derefter s med en InlineQuery.




  1. SQLite-indstilling af ydeevne

  2. Programmeringsfejl:SQLite-objekter oprettet i en tråd kan kun bruges i den samme tråd

  3. Sådan fungerer SQLite Max()

  4. MySQL RAND() Funktion – Generer et tilfældigt tal i MySQL