Fehlermeldung

gogosch

Neuer Benutzer
Beiträge
3
Hallo,

ich hätte da mal eine Frage unzwar möchte ich mit sub selects arbeiten und daher diese Abfrage abändern

Code:
SELECT top 10 LKZ, LEFT(PLZ,2) as LR, COUNT (*) as Anzahl,
(SELECT dbo.CLKZ.TXT from CLKZ WHERE CLKZ.LKZ=ADRS.LKZ) as Land
FROM ADRS JOIN dbo.INTT ON ADRS.ID = INTT.ADRK
WHERE len(PLZ)>0 and REFT= 'N'
GROUP BY LEFT(PLZ,2), LKZ
ORDER BY Anzahl DESC

bis hierhin klappt alles aber wenn ich nun den Join durch einen sub select ersetzen möchte(resourcen sparen) klappt es nicht..

Code:
SELECT top 10 LKZ, LEFT(PLZ,2) as LR, COUNT (*) as Anzahl,
(SELECT dbo.CLKZ.TXT from CLKZ WHERE CLKZ.LKZ=ADRS.LKZ) as Land
FROM ADRS, [COLOR=#00ff00]--JOIN dbo.INTT ON ADRS.ID = INTT.ADRK[/COLOR]
(SELECT dbo.INTT.ADRK FROM INTT WHERE INTT.ADRK=ADRS.ID)
WHERE len(PLZ)>0 and REFT= 'N'
GROUP BY LEFT(PLZ,2), LKZ
ORDER BY Anzahl DESC
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.582
Also zunächst einmal braucht ein Subselect im FROM Teil einen Alias, in diesem Fall "tabelle".
Code:
SELECT    TOP 10 LKZ,
        left(PLZ,2) AS LR,
        count(*) AS Anzahl,
        (    SELECT    dbo.CLKZ.TXT
            FROM    CLKZ
            WHERE    CLKZ.LKZ = ADRS.LKZ) AS Land
FROM    ADRS,
--JOIN    dbo.INTT ON ADRS.ID = INTT.ADRK
        (    SELECT    dbo.INTT.ADRK
            FROM    INTT
            WHERE    INTT.ADRK = ADRS.ID ) tabelle
WHERE    len(PLZ) > 0
AND        REFT = 'N'
GROUP BY left(PLZ,2),LKZ
ORDER BY Anzahl DESC
Und dann bin ich mir auch noch nicht so sicher ob es funktioniert. Eventuell musst du die Spalten mit Tabelle.Spalte ansprechen. Außerdem erschließt sich mir der Sinn noch nicht :)
 

gogosch

Neuer Benutzer
Beiträge
3
Danke aber es klappt noch nicht :)

Unzwar soll das eine einfach nur eine Abfrage sein einen sinn hat sie im prinzip nicht soll einfach nur eine übung sein.


Code:
SELECT top 10 LKZ, LEFT(PLZ,2) as LR, COUNT (*) as Anzahl,
(SELECT dbo.CLKZ.TXT from CLKZ WHERE CLKZ.LKZ=ADRS.LKZ) as Land
FROM ADRS JOIN
(SELECT dbo.INTT.ADRK FROM INTT) as Test
WHERE len(PLZ)>0 and REFT = 'N'
GROUP BY LEFT(PLZ,2), LKZ
ORDER BY Anzahl DESC

Bei WHERE(Zeile 5) gibt er diese Fehlermeldung raus:
Falsche Syntax in der Nähe des 'WHERE'-Schlüsselworts.

und REFT(Zeile5) wäre angeblich ein "ungüliger Spaltenname" obwohl es richtig geschrieben ist.
 

ukulele

Datenbank-Guru
Beiträge
4.582
Nach Tabelle ADRS sollte auch ein Komma stehen und dann der Subselect oder ein vernünftiger JOIN. Jetzt steht da JOIN ( SELECT...

Gehört REFT denn zur Tabelle ADRS?
 
Werbung:

gogosch

Neuer Benutzer
Beiträge
3
Nein REFT gehört nicht zu ADRS sondern zu INTT.
Hab die Lösung bereits gefunden :)
Code:
SELECT top 10 LKZ, LEFT(PLZ,2) as LR, COUNT (*) as Anzahl,
(SELECT dbo.CLKZ.TXT from CLKZ WHERE CLKZ.LKZ=ADRS.LKZ) as Land
FROM
(SELECT ADRS.PLZ, ADRS.LKZ, INTT.REFT FROM INTT Join ADRS ON INTT.ADRK = ADRS.ID
WHERE len(PLZ)>0 and REFT = 'N') as ADRS
GROUP BY LEFT(PLZ,2), LKZ
ORDER BY Anzahl DESC
 
Oben