/ 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
Problem med query indeni query
Fra : Gert Hansen


Dato : 28-02-05 23:26

Hej.

Jeg har en "inderside" som denne:

SELECT Count(shows.day) AS NumberOfDay, shifts.workerid
FROM shows INNER JOIN shifts ON shows.shownr=shifts.shownr
WHERE (((shows.day)>=Now()))
GROUP BY shifts.workerid

Min "yderside" er at jeg vil gerne lave et right join på en tredje tabel - i
Access gøres det ved at gøre ovennævnte forespørgsel til en selvstændig
query, her givet navnet temp:

SELECT temp.*, workers.showname
FROM temp RIGHT JOIN workers ON temp.workerid=workers.workerid
ORDER BY workers.showname

Kan det lade sig gøre at lave dette med en enkelt sql sætning, så jeg ikke
skal bruge noget der kun fungerer i Access. Mit eget foreslag er (det virker
dog ikke):

SELECT Count(shows.day) AS NumberOfDay, shifts.workerid, workers.showname
FROM (shows INNER JOIN shifts ON shows.shownr=shifts.shownr) RIGHT JOIN
workers ON shifts.workerid=workers.workerid
WHERE (((shows.day)>=Now()))
GROUP BY shifts.workerid



/GertH



 
 
Kristian Damm Jensen (01-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 01-03-05 10:31


Gert Hansen wrote:
> Hej.
>
> Jeg har en "inderside" som denne:
>
> SELECT Count(shows.day) AS NumberOfDay, shifts.workerid
> FROM shows INNER JOIN shifts ON shows.shownr=shifts.shownr
> WHERE (((shows.day)>=Now()))
> GROUP BY shifts.workerid
>
> Min "yderside" er at jeg vil gerne lave et right join på en tredje
tabel - i
> Access gøres det ved at gøre ovennævnte forespørgsel til en
selvstændig
> query, her givet navnet temp:
>
> SELECT temp.*, workers.showname
> FROM temp RIGHT JOIN workers ON temp.workerid=workers.workerid
> ORDER BY workers.showname
>
> Kan det lade sig gøre at lave dette med en enkelt sql sætning, så
jeg ikke
> skal bruge noget der kun fungerer i Access. Mit eget foreslag er (det
virker
> dog ikke):
>
> SELECT Count(shows.day) AS NumberOfDay, shifts.workerid,
workers.showname
> FROM (shows INNER JOIN shifts ON shows.shownr=shifts.shownr) RIGHT
JOIN
> workers ON shifts.workerid=workers.workerid
> WHERE (((shows.day)>=Now()))
> GROUP BY shifts.workerid

Jeg er ikke 100% sikker på standarden, men de fleste dbms'er tillader
ikke at du benytter resultatet at et inner join som den ydre del af et
ydre join. Jeg forstår egentlig ikke hvorfor, en tabel er vel en
tabel, også selvom den er derived.

Det kan man komme ud over ved at lave det indre join on til et ydre, og
derefter selv fjerne null-rækkerne:

SELECT Count(shows.day) AS NumberOfDay, shifts.workerid,
workers.showname
FROM (shows
RIGHT OUTER JOIN shifts -- outer join
ON shows.shownr=shifts.shownr
AND shows.shownr IS NOT NULL) -- men i virkeligheden indre
RIGHT JOIN workers ON shifts.workerid=workers.workerid
WHERE shows.day >= Now()
GROUP BY shifts.workerid

VH
Kristian


Gert Hansen (04-03-2005)
Kommentar
Fra : Gert Hansen


Dato : 04-03-05 10:01

>SELECT Count(shows.day) AS NumberOfDay, shifts.workerid,
>workers.showname
>FROM (shows
> RIGHT OUTER JOIN shifts -- outer join
> ON shows.shownr=shifts.shownr
> AND shows.shownr IS NOT NULL) -- men i virkeligheden indre
>RIGHT JOIN workers ON shifts.workerid=workers.workerid
>WHERE shows.day >= Now()
>GROUP BY shifts.workerid

Den mangler stadig den tredie tabel... Men jeg prøvede den, og Access
brokker sig stadig med Join type ikke understøttet. Så jeg gætter på at
Access bare ikke kan noget med subqueries.

/GertH



Kristian Damm Jensen (04-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 04-03-05 10:45


Gert Hansen wrote:
> >SELECT Count(shows.day) AS NumberOfDay, shifts.workerid,
> >workers.showname
> >FROM (shows
> > RIGHT OUTER JOIN shifts -- outer join
> > ON shows.shownr=shifts.shownr
> > AND shows.shownr IS NOT NULL) -- men i virkeligheden
indre
> >RIGHT JOIN workers ON shifts.workerid=workers.workerid
> >WHERE shows.day >= Now()
> >GROUP BY shifts.workerid
>
> Den mangler stadig den tredie tabel... Men jeg prøvede den, og
Access
> brokker sig stadig med Join type ikke understøttet. Så jeg gætter
på at
> Access bare ikke kan noget med subqueries.

Du gætter forkert. Ikke alene understøttes det, jeg har lige fået
den til at autogenerere det. Men den understøtter ikke brugen af
"outer". Fjerne dette ene ord, og prøv igen.

VH
Kristian

>
> /GertH


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste