|
| [MMSQL] Hjælp til subquery Fra : Steen Andreassen |
Dato : 18-12-03 18:49 |
|
Er der ikke en der kan komme med et godt råd til hvordan man får denne
selectsætning til at fungere ?
I tabellen tbl_dec2hex, er kolonnen "hex" af typen char 2, og indeholder
hexværdierne 00-FF.
I tabellen tbl_station, er kolonnen "centralhex" af typen char 4, og
indeholder spredte værdier fra 0000-FFFF
Funktionen skal være, at man udfra de 3 første cifre (830 i eksemplet) skal
kunne finde alle ledige værdier der begynder med 830. Altså i intervallet
8300-830F
Jeg kan få det til at virke ved at lave et view, med første selectsætning,
og så bruge viewet sammen med anden selectsætning (Subqueryen).
Kan dette virkelig ikke laves på en gang, uden at skulle bruge et view?
SELECT DISTINCT RIGHT(hex,1) AS temp
from tbl_dec2hex
WHERE temp NOT IN
(SELECT RIGHT(centralhex, 1)
FROM tbl_station
WHERE LEFT(centralhex, 3)= '830')
Jeg har ligeledes prøvet med:
SELECT DISTINCT RIGHT(hex,1)
FROM tbl_dec2hex
WHERE NOT EXISTS
(SELECT RIGHT(centralhex, 1)
FROM tbl_station
WHERE LEFT(centralhex, 3)= '830')
/steen
| |
Jens Gyldenkærne Cla~ (18-12-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 18-12-03 21:58 |
|
Steen Andreassen skrev:
> Jeg kan få det til at virke ved at lave et view, med første
> selectsætning, og så bruge viewet sammen med anden
> selectsætning (Subqueryen). Kan dette virkelig ikke laves på
> en gang, uden at skulle bruge et view?
Det ville hjælpe lidt hvis du fortalte hvilken fejl du får.
Forudsat at MMSQL er en skrivefejl for MSSQL, kan jeg dog se én
ting der er galt i begge forespørgsler:
> SELECT DISTINCT RIGHT(hex,1) AS temp
> from tbl_dec2hex
> WHERE temp NOT IN
Du kan ikke henvise til et alias-felt i en forespørgsel. Brug
RIGHT(hex, 1) både i SELECT-delen og i WHERE-delen:
SELECT DISTINCT RIGHT(hex, 1) as temp
FROM tbl_dec2hex
WHERE RIGHT(hex, 1) NOT IN ...
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information
| |
Steen Andreassen (18-12-2003)
| Kommentar Fra : Steen Andreassen |
Dato : 18-12-03 22:17 |
|
Tak for hjælpen...
Jo du har helt ret. Der skulle have stået MSSQL.
Fejlen er, at jeg får en komplet liste med adresserne fra 0-F i
forespørglen, selvom der allerede er brugt adresserne fra 1-4.
Med første eksempel i bunden:
Hvis selectsætningerne udføres seperat, får jeg korrekt med første
selectsætning alle hexværdierne fra 0-F, og når anden selectsætning køres
seperat får jeg værdierne 1, 2, 3, 4.
Derfor skulle jeg gerne have hexværdierne 0-F minus værdierne 1-4 med den
komplette query.
Med sidste eksempel (Indeholdende exists), får jeg slet ingen værdier retur
fra forespørgslen.
/Steen
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns9455DF65EC1ACjcdmfdk@gyrosmod.cybercity.dk...
> Steen Andreassen skrev:
>
> > Jeg kan få det til at virke ved at lave et view, med første
> > selectsætning, og så bruge viewet sammen med anden
> > selectsætning (Subqueryen). Kan dette virkelig ikke laves på
> > en gang, uden at skulle bruge et view?
>
> Det ville hjælpe lidt hvis du fortalte hvilken fejl du får.
>
> Forudsat at MMSQL er en skrivefejl for MSSQL, kan jeg dog se én
> ting der er galt i begge forespørgsler:
>
> > SELECT DISTINCT RIGHT(hex,1) AS temp
> > from tbl_dec2hex
> > WHERE temp NOT IN
>
> Du kan ikke henvise til et alias-felt i en forespørgsel. Brug
> RIGHT(hex, 1) både i SELECT-delen og i WHERE-delen:
>
> SELECT DISTINCT RIGHT(hex, 1) as temp
> FROM tbl_dec2hex
> WHERE RIGHT(hex, 1) NOT IN ...
> --
> Jens Gyldenkærne Clausen
> »Diplomatiet består netop i, at de gamle kommatister kan få lov til
> at tro, at de har vundet. Men i virkeligheden har de tabt.«
> Ole Togeby i Information
| |
Steen Andreassen (19-12-2003)
| Kommentar Fra : Steen Andreassen |
Dato : 19-12-03 17:23 |
|
Hejsa Jens....
Tusind tak for hjælpen.
Når man ser løsningen, er det jo klart at mit forsøg ikke virkede.
Sætningen er nu implementeret i PHP-koden.
God Jul.
/Steen
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns9455DF65EC1ACjcdmfdk@gyrosmod.cybercity.dk...
> Steen Andreassen skrev:
>
> > Jeg kan få det til at virke ved at lave et view, med første
> > selectsætning, og så bruge viewet sammen med anden
> > selectsætning (Subqueryen). Kan dette virkelig ikke laves på
> > en gang, uden at skulle bruge et view?
>
> Det ville hjælpe lidt hvis du fortalte hvilken fejl du får.
>
> Forudsat at MMSQL er en skrivefejl for MSSQL, kan jeg dog se én
> ting der er galt i begge forespørgsler:
>
> > SELECT DISTINCT RIGHT(hex,1) AS temp
> > from tbl_dec2hex
> > WHERE temp NOT IN
>
> Du kan ikke henvise til et alias-felt i en forespørgsel. Brug
> RIGHT(hex, 1) både i SELECT-delen og i WHERE-delen:
>
> SELECT DISTINCT RIGHT(hex, 1) as temp
> FROM tbl_dec2hex
> WHERE RIGHT(hex, 1) NOT IN ...
> --
> Jens Gyldenkærne Clausen
> »Diplomatiet består netop i, at de gamle kommatister kan få lov til
> at tro, at de har vundet. Men i virkeligheden har de tabt.«
> Ole Togeby i Information
| |
Jens Gyldenkærne Cla~ (19-12-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 19-12-03 21:51 |
|
Steen Andreassen skrev:
> Tusind tak for hjælpen.
Velbekomme. Hvis du vil gøre lidt til gengæld, må du gerne læse min
signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
|
|