2015-09-01 29 views
5

Potete per favore rivedere questo codice? Ho ottenuto questo errore e non sono sicuro quale è la causa:SQL Server - Sintassi errata vicino)

Incorrect syntax near ')'.

select * 
from 
    (select distinct 
     sar90.code, sar90.state, sar90.county, 
     sabet.code, sabet.state, sabet.county 
    from 
     [dbo].[sarshomari_90] as sar90, 
     [dbo].[Fixed] as sabet 
    where 
     sar90.county = sabet.county 
     and sar90.state = sabet.state 
     and sar90.state = N'kerman') 
+2

[Cattive abitudini a calci: utilizzando vecchio stile join] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - quello stile vecchio * elenco di tabelle * separato da virgole * è stato sostituito con la sintassi * proper * ANSI 'JOIN' in ANSI - ** 92 ** SQL Standard (** più di 20 anni ** fa) e il suo uso è sconsigliato –

+0

Penso che dovresti provarlo da solo per almeno 10 minuti, lo chiamo EARLY ERRORS di sql –

+0

Come fai a saperlo, non l'ho fatto? –

risposta

7

È necessario effettuare l'alias della sottoquery. Tuttavia, non è necessario utilizzare una subquery per questo. È possibile utilizzare direttamente SELECT DISTINCT. Inoltre, per favore, avoid using old-style JOIN syntax e usa invece una dichiarazione esplicita JOIN.

Tuttavia, se si desidera utilizzare la sottoquery, la colonna deve avere nomi univoci. Fai questo aggiungendo alias univoci.

select * 
from(
    select distinct 
     sar90.code as code1, 
     sar90.state as state1, 
     sar90.county as country1, 
     sabet.code as code2, 
     sabet.state as state2, 
     sabet.county as country2 
    from [dbo].[sarshomari_90] as sar90 
    inner join [dbo].[Fixed] as sabet 
     on sar90.county = sabet.county 
     and sar90.state = sabet.state 
    where 
     sar90.state = N'kerman' 
)t 
+0

Sì, lo so, ma faceva parte di una query più ampia, ho provato a utilizzare una parte più piccola della mia query. Inoltre, l'alias non funzionerà, dà un altro errore. –

+0

@yousefyegane è necessario pubblicare l'intero codice per aiutarti – Madhivanan

+0

È necessario utilizzare alias univoci per ciascuna colonna nella sottoquery. Vedi la mia modifica. –

3

Aggiungi alias subquery e alias di colonna per evitare nomi ambigui.

select * 
from 
(select distinct 
    [code1] = sar90.code, 
    [state1] = sar90.state, 
    [county1] = sar90.county, 
    [code2] = sabet.code, 
    [state2] = sabet.state, 
    [county2] = sabet.county 
from [dbo].[sarshomari_90] as sar90, [dbo].[Fixed] as sabet 
where sar90.county=sabet.county 
     and sar90.state= sabet.state 
     and sar90.state=N'kerman') AS tab 
+0

Prima ho avuto AS, e dà questo errore: La colonna 'stato' è stata specificata più volte per 'fin'. –

Problemi correlati