INNER JOIN Присоединяемое выражение не поддерживается? - PullRequest
0 голосов
/ 12 февраля 2012

У меня проблема со следующим запросом SQL:

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

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

Ошибка: выражение соединения не поддерживается

1 Ответ

0 голосов
/ 12 февраля 2012

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

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!

...