/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste