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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL spørgsmål
Fra : Martin Jensen


Dato : 07-12-08 21:55

Hej NG

Jeg er igen stødt ind i et problem med en SQL sætning

Jeg har en MSSQL database, hvori jeg har tre tabeller (MinSide og
Hold).

MinSide
ID - int
BrugerID - int
HoldID - int

Hold
ID - int
HoldNavn - nvarchar(50)


Jeg er ved at lave en side hvor man kan vælge poster fra tabellen
Hold, som skal gemmes i MinSide.

Jeg skal derfor have udvalgt alle poster fra Hold, og så skal jeg
vide hvilke af disse poster som allerede er registreret i
tabellen MinSide (den er registreret hvis der er en post i
MinSide hvor BrugerID = session("BrugerID") OG HoldID = Hold.ID)

Er det muligt at lave en sql som laver denne udvælgelse?

Med nedenstående får jeg kun de poster ud som er registreret, men
mangler dem som ikke er registreret.

SELECT Hold.ID, Hold.HoldNavn, minside.HoldID
FROM Hold
INNER JOIN minside ON Hold.ID = minside.HoldID AND
minside.BrugerID = "&session("BrugerID")&"
GROUP BY Hold.ID, Hold.HoldNavn, minside.HoldID

Håber der er nogen som kan hjælpe mig videre?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Stig Johansen (08-12-2008)
Kommentar
Fra : Stig Johansen


Dato : 08-12-08 01:16

Martin Jensen wrote:

> Er det muligt at lave en sql som laver denne udvælgelse?

Muligvis.

> Med nedenstående får jeg kun de poster ud som er registreret, men
> mangler dem som ikke er registreret.
>
> SELECT Hold.ID, Hold.HoldNavn, minside.HoldID
> FROM Hold
> INNER JOIN minside ON Hold.ID = minside.HoldID AND
> minside.BrugerID = "&session("BrugerID")&"

Lidt afhængig af hvad du vil, kan du ændre den til
SELECT Hold.ID, Hold.HoldNavn, minside.HoldID
FROM Hold
LEFT OUTER JOIN minside ON Hold.ID = minside.HoldID AND
minside.BrugerID = "&session("BrugerID")&"

Her vil du få alle hold, og dem der ikke er i minside vil være NULL i
minside.HoldID.

Alternativt kan du bibeholde den du har, og bruge
SELECT Hold.ID, Hold.HoldNavn, minside.HoldID
FROM Hold
LEFT OUTER JOIN minside ON Hold.ID = minside.HoldID AND
minside.BrugerID = "&session("BrugerID")&"
WHERE minside.HoldID IS NULL

Den vil finde de hold som ikke er registreret.
Du kan også kombinere de 2 med en UNION ALL
> GROUP BY Hold.ID, Hold.HoldNavn, minside.HoldID
>
> Håber der er nogen som kan hjælpe mig videre?

Der skulle være et par muligheder der.

Hov ser lige GROUP BY - du har ikke nogle aggregate functions, så mon ikke
det skal være ORDER BY Hold.ID, Hold.HoldNavn (minside.HoldID behøver du
ikke).

--
Med venlig hilsen
Stig Johansen

Martin Jensen (09-12-2008)
Kommentar
Fra : Martin Jensen


Dato : 09-12-08 17:21

Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> Muligvis.
[SNIP]
> Lidt afhængig af hvad du vil, kan du ændre den til
> SELECT Hold.ID, Hold.HoldNavn, minside.HoldID
> FROM Hold
> LEFT OUTER JOIN minside ON Hold.ID = minside.HoldID AND
> minside.BrugerID = "&session("BrugerID")&"
>
> Her vil du få alle hold, og dem der ikke er i minside vil være NULL i
> minside.HoldID.

Det passer perfekt til hvad jeg vil.

> Hov ser lige GROUP BY - du har ikke nogle aggregate functions, så mon ikke
> det skal være ORDER BY Hold.ID, Hold.HoldNavn (minside.HoldID behøver du
> ikke).

Kan heller ikke lige forklare hvor den GROUP BY kommer fra. Måske en
copy-paste fra noget gammelt kode :)

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste