Выполните одиночный выбор с помощью где - PullRequest
0 голосов
/ 21 мая 2009

Я хотел бы получить следующий оператор SQL с дозвуковой 2,2

SELECT Product.* FROM Product WHERE Product.OurPrice <> Product.RetailPrice  

Запрос дозвукового выбора, с которого я начал:

SubSonic.SqlQuery select = new SubSonic.Select()
.From<Product>()
.Where(Product.Columns.OurPrice)
.IsNotEqualTo(... object /*Should be Product.Columns.RetailPrice, but that's giving and exception*/...);

У меня вопрос, как заставить SubSonic 2.2 сгенерировать условие where для другого столбца в той же таблице.

Ответы [ 3 ]

0 голосов
/ 21 мая 2009

Решение проблемы выше:

ProductCollection products = new SubSonic.InlineQuery().ExecuteAsCollection<ProductCollection>
(@"SELECT Product.ProductId, ... Product.ModifiedBy, Product.ModifiedOn, Product.IsDeleted FROM Product WHERE (Product.OurPrice <> Product.RetailPrice)");

Repeater1.DataSource = products;
Repeater1.DataBind();
0 голосов
/ 21 мая 2009

Вы можете использовать старый объект Query (все еще включенный в 2.2) следующим образом:

Query q = new Query(Product.Schema.TableName).WHERE("OurPrice <> RetailPrice");
ProductCollection products = new ProductCollection();
products.LoadAndCloseReader(q.ExecuteReader());
0 голосов
/ 21 мая 2009

Похоже, вы пытаетесь сравнить два столбца в вашем запросе. Это невозможно в SubSonic 2.2, если вы не используете встроенный запрос:

http://subsonicproject.com/docs/Inline_Query_Tool

Вы также можете использовать функцию представления или таблицы.

...