2009-05-12 5 views
1

Я пытаюсь построить следующий запрос:Дозвуковой запрос псевдонима - как?

`new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst") 
.From(ArrGruppeLinie.Schema) 
.InnerJoin(ArrGruppe.IdColumn, ArrGruppeLinie.ArrGruppeIDColumn) 
.Where(ArrDeltager.Columns.Kategori).IsLessThan(20) 
.And("Arrgruppe.Tekst").Like("mytext");` 

Он генерирует некорректный запрос из-за .И(), потому что у меня есть псевдонимы, прикрепленные на две колонки с тем же названием - А-оператор находится здесь :

... AND (ArrGruppe.Tekst LIKE @ArrGruppe.Tekst1 
)',N'@Kategori0 tinyint,@ArrGruppe.Tekst1 varchar(10)',@Kategori0=20,@ArrGruppe.Tekst1='mytext' 

Я ничего не смог найти в Google, который мог бы решить эту проблему. Как написать Subsonic-запрос для создания допустимого параметра SQL для ArrGruppe.Tekst ??

EDIT: проблема была решена с помощью обновления от версии 2.1 Final до версии 2.2.

ответ

1
new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst") 
    .From(ArrGruppeLinie.Schema) 
    .InnerJoin(ArrGruppe.Columns.Id, ArrGruppeLinie.Columns.ArrGruppeID) 
    .Where(ArrDeltager.Columns.Kategori).IsLessThan(20) 
    .And(Arrgruppe.Columns.Tekst).Like("mytext"); 

Если не попробуйте обновить до последней версии SubSonic http://code.google.com/p/subsonicproject/downloads/list потому что вы можете ударять следующий вопрос (исправленный в 2.2)

Google Выпуск 31 - Где Expression не правильно форматирование с помощью квалифицированного имени столбца

+0

У меня есть ситуация, когда у меня есть две таблицы с соответствующими именами столбцов «ArrGruppe.Tekst» и «ArrGruppeLinie.Tekst». Возникает вопрос: как написать SubSonic-запрос, в котором я генерирую псевдонимы для имен столбцов, чтобы сделать некоторый действительный SQL - и в том же запросе создать AND-фильтр на основе одного из столбцов, для которого я только что создал псевдоним? Я попробовал ваш подход - выше генерирует следующее: И Tekst LIKE @ Tekst1 ... который является недействительным, поскольку Tekst неоднозначный колонка, потому что есть два из них. Пожалуйста, напишите снова, если вам нужна дополнительная информация: o) – kerbou

+0

Я отредактировал запрос выше, чтобы он исправил ошибку неоднозначного имени столбца. Дайте мне знать, если это не –

+0

Извините. Он генерирует следующее AND-предложение: ... И ArrGruppe.Tekst LIKE @ ArrGruppe.Tekst1 , что является недопустимым, поскольку вы не можете иметь точку в имени параметра. – kerbou