2012-02-12 2 views
0

У меня есть проблемы с помощью следующего запроса SQL:INNER JOIN Присоединение к выражению не поддерживается?

select 
    [customer].teskilat_kodu, [customer].hesab_nomresi, 
    [customer].soyad, [customer].ad, [customer].ataadi, [customer].unvan, 
    [customer].tevellud, [customer].nomre, [customer].cins, [customer].status, 
    [customer].qohum_nomresi, [customer].email 
from 
    [customer] 
INNER JOIN 
    [kart_novleri] ON [kart_novleri].id = '[customer].kart_novu' 
ORDER BY 
    [customer].id ASC 

Он возвращает ошибку:

Error: Join expression not supported

+1

Не ставьте условия JOIN в одинарные кавычки! Используйте это вместо: '..... ON [kart_novleri] .id = [customer] .kart_novu' (примечание: ** никаких цитат ** вокруг' [customer] .kart_novu'!) –

+0

Зачем вам нужен символ : «здесь» [клиент] .kart_novu '? – Hadas

+0

Мне нужно '', потому что [kart_novleri] .id int и [customer] .kart_novu String tpye. –

ответ

0

В доступа (непроверенные):

select 
    [customer].teskilat_kodu, [customer].hesab_nomresi, 
    [customer].soyad, [customer].ad, [customer].ataadi, [customer].unvan, 
    [customer].tevellud, [customer].nomre, [customer].cins, [customer].status, 
    [customer].qohum_nomresi, [customer].email 
from 
    [customer] 
INNER JOIN 
    [kart_novleri] ON [kart_novleri].id = CInt([customer].kart_novu) 
ORDER BY 
    [customer].id ASC 

В TSQL что-то вроде этого должно работы:

select 
    [customer].teskilat_kodu, [customer].hesab_nomresi, 
    [customer].soyad, [customer].ad, [customer].ataadi, [customer].unvan, 
    [customer].tevellud, [customer].nomre, [customer].cins, [customer].status, 
    [customer].qohum_nomresi, [customer].email 
from 
    [customer] 
INNER JOIN 
    [kart_novleri] ON cast([kart_novleri].id as varchar(max)) = [customer].kart_novu 
ORDER BY 
    [customer].id ASC 

или это

select 
    [customer].teskilat_kodu, [customer].hesab_nomresi, 
    [customer].soyad, [customer].ad, [customer].ataadi, [customer].unvan, 
    [customer].tevellud, [customer].nomre, [customer].cins, [customer].status, 
    [customer].qohum_nomresi, [customer].email 
from 
    [customer] 
INNER JOIN 
    [kart_novleri] ON [kart_novleri].id = cast([customer].kart_novu as int) 
ORDER BY 
    [customer].id ASC 

В зависимости от ваших данных, которые вы можете сделать «IsNumber» по результатам броска перед присоединиться, чтобы избежать фатальных ошибок. Я бы предложил использовать CTE для «массажа» столбца перед объединением, чтобы обеспечить надежность - ИЛИ сохранить исходное значение как int!

+0

Hogan не работает :( –

+0

CodeInChaos мой доступ к базе данных .mdb –

+0

Я считаю, что вы используете CInt для преобразования в целое число в Acess – Hogan