Дозвуковой: запрос самостоятельного соединения - PullRequest
0 голосов
/ 22 июля 2010

Я хочу построить запрос, который будет использоваться в .net. Ниже вы можете увидеть SQL-запрос, любой может дать мне эквивалентный дозвуковой запрос

SELECT DISTINCT
  a2.AccountID AS BID,
  a2.AccountName AS Brand
FROM
  Account a
  INNER JOIN Account a2 ON a.ParentID = a2.AccountID
WHERE
  a.AccountTypeID = 6
ORDER BY
  Brand

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 22 июля 2010

SubSonic 2 или 3?

С SubSonic у вас всегда есть хороший черный ход.

Это называется InlineQuery в 2.x и CodingHorror в 3.x

Например:

var result = DB.Query().ExecuteReader("SELECT DISTINCT
      a2.AccountID AS BID,
      a2.AccountName AS Brand
   FROM Account a
     INNER JOIN Account a2 ON a.ParentID = a2.AccountID
   WHERE a.AccountTypeID = ?accounttypeid
   ORDER BY Brand", 6);

Если вы хотите остаться на свободном интерфейсе из-за проверки синтаксиса и преобразования sql. Вот еще один подход, о котором я мог подумать (SubSonic 2.2)

        DataTable result = DB.Select(
                "a1." + Account.Columns.AccountId + " as BID",
                "a2." + Account.Columns.AccountName + " as Brand")
            .From(Account.Schema.QualifiedName + " a1")
            .InnerJoin(Account.Schema.QualifiedName + " a2", 
                      "a2." + Account.Columns.account_id,
                "a1", "a1." + Account.Columns.parent_id)
            .Where("a1." + Account.Columns.AccountTypeId).IsEqualTo(6)
            .OrderAsc("a2." + Account.Columns.AccountName)
            .ExecuteDataSet().Tables[0];

Но я никогда этого не делал и не проверял. Но, возможно, это работает.

...