|
| Hent oplysninger i flere tabeller ? Fra : Is |
Dato : 24-11-06 21:50 |
|
Hej
Jeg er ved at lave en database med resultater, som skal lægge ud på en
hjemmeside via asp.
(access2000)
Kan jeg lave en tabel med deltagere, og en med resultater, hvor jeg kun
gemmer deltagerID (og resultat), og så når det skal vises, slå op i begge
tabeller, for at se hvad deltagerID svare til i tabel deltager.
Eller skal jeg lægge alt i en tabel ??
--
Med venlig hilsen
Erik Isager
| |
Jens Gyldenkærne Cla~ (24-11-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 24-11-06 23:13 |
|
Is skrev:
> Kan jeg lave en tabel med deltagere, og en med resultater,
> hvor jeg kun gemmer deltagerID (og resultat),
Ja.
> og så når det skal vises, slå op i begge tabeller, for at se hvad
> deltagerID svare til i tabel deltager.
Ja. Det kaldes et join, og er en fundamental ting når man arbejder
med databaser. Hvis du arbejder i Access, kan du oprette en
joinforespørgsel med en guide, og gemme den i basen. Så kan du åbne
forespørgslen på samme måde som du åbner en tabel.
I ren SQL laves et normalt join som følger:
SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
> Eller skal jeg lægge alt i en tabel ??
Det vil normalt være en dårlig ide. Det afgørende er hvilke data du
skal gemme om hhv. deltagere og resultater. Hvis hver deltager kun
skal have ét resultat registreret, kan du i princippet godt holde
det i samme tabel.
--
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
| |
Is (24-11-2006)
| Kommentar Fra : Is |
Dato : 24-11-06 23:54 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9885EC18EE09Ajcdmfdk@gyrosmod.cybercity.dk...
> Is skrev:
>
> > Kan jeg lave en tabel med deltagere, og en med resultater,
> > hvor jeg kun gemmer deltagerID (og resultat),
>
> Ja.
>
> > og så når det skal vises, slå op i begge tabeller, for at se hvad
> > deltagerID svare til i tabel deltager.
>
> Ja. Det kaldes et join, og er en fundamental ting når man arbejder
> med databaser. Hvis du arbejder i Access, kan du oprette en
> joinforespørgsel med en guide, og gemme den i basen. Så kan du åbne
> forespørgslen på samme måde som du åbner en tabel.
>
> I ren SQL laves et normalt join som følger:
>
> SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
Jeg har laver relationerne i access, hvis det er det du mener ???
Det lyder spændende !
Hvordan får jeg fat i forespørgslen ???
den jeg henter data fra tabeller med ser sådan ud:
data.Open "SELECT * FROM resultater", strConnect
hvor "resultater" er tabelnavn
den forespørgsel jeg gerne vil hente fra hedder "qryResultater" !
Skal den så bare hedde
data.Open "SELECT * FROM qryResultater", strConnect ???
---
--
Med venlig hilsen
Erik Isager
| |
Jens Gyldenkærne Cla~ (25-11-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 25-11-06 00:06 |
|
Is skrev:
>> SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
>
> Jeg har laver relationerne i access, hvis det er det du mener
Måske (jeg tror du mener noget andet med relationer end jeg gør).
Relationer er formelle forbindelser mellem tabeller i en database -
fx kan en relation mellem en resultattabel R og en deltagertabel D
specificere at feltet deltagerID i R svarer til præcis én post i D.
En join-forespørgsel er en ad hoc-forbindelse mellem tabeller. Den
oprettes ofte mellem tabeller hvor der også er en relation - i det
tilfælde kan en "query wizard" gætte hvordan joinudtrykket skal
være, så det er lettere at lave forespørgslen.
> Hvordan får jeg fat i forespørgslen ???
[snip]
> den forespørgsel jeg gerne vil hente fra hedder
> "qryResultater" !
>
> Skal den så bare hedde
> data.Open "SELECT * FROM qryResultater", strConnect ???
Jep.
--
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
| |
Is (25-11-2006)
| Kommentar Fra : Is |
Dato : 25-11-06 13:46 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> > Hvordan får jeg fat i forespørgslen ???
>
> [snip]
>
> > den forespørgsel jeg gerne vil hente fra hedder
> > "qryResultater" !
> >
> > Skal den så bare hedde
> > data.Open "SELECT * FROM qryResultater", strConnect ???
>
Hvor skal jeg så skrive:
SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
--
Med venlig hilsen
Erik Isager
| |
Jørn Andersen (25-11-2006)
| Kommentar Fra : Jørn Andersen |
Dato : 25-11-06 16:32 |
|
On Sat, 25 Nov 2006 13:45:42 +0100, "Is"
<detteerminnewsgruppemailadresse2@get2net.dk> wrote:
>
>"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
>> > den forespørgsel jeg gerne vil hente fra hedder
>> > "qryResultater" !
>> >
>> > Skal den så bare hedde
>> > data.Open "SELECT * FROM qryResultater", strConnect ???
>Hvor skal jeg så skrive:
>SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
Det skal du ikke. Du har jo lavet forespørgslen i Access i stedet og
kalder den så bare direkte.
Med andre ord, har du to muligheder for at lave en forespørgsel:
1. Du kan lave den i Access (inkl. joins, betingelser osv.) og så
kalde forespørgslen direkte.
2. Du kan selv "formulere" SQL'en til forespørgslen (inkl. joins,
betingelser osv.) på din ASP side.
Hvilken der er at foretrække ved jeg egentlig ikke. Jeg plejer altid
at bruge metode 2 - selv om jeg ofte bruger forespørgselsgitteret
(QBE) til at "fifle" SQL'en på plads, især hvis det er lidt mere
komplekse forespørgsler.
Jeg synes fordelen ved at have hele SQL'en på ASP-siden er, at det er
nemmere at gennemskue ASP-siden. Plus at man ikke risikerer uventede
konsekvenser, hvis man har brugt (Access-)forespørgslen flere steder
og så bagefter retter i den.
Om der er nogle ressource-mæssige fordele ved den ene frem for den
anden ved jeg ikke. I andre databaser (fx MS SQL) bruger man stored
procedures, som svjv gemmes i databasen for hurtigere tilgang, men
sådan er det vist ikke i Access.
(Hvis nogen har en mening om, at den ene metode er bedre end den
anden, må I gerne kommentere!)
Mvh. Jørn
--
Jørn Andersen,
Brønshøj
| |
Is (25-11-2006)
| Kommentar Fra : Is |
Dato : 25-11-06 17:39 |
|
"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:4mngm2hl17t9oe6vgi2sqng81alflotqvn@4ax.com...
> On Sat, 25 Nov 2006 13:45:42 +0100, "Is"
> <detteerminnewsgruppemailadresse2@get2net.dk> wrote:
>
> >
> >"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> >> > den forespørgsel jeg gerne vil hente fra hedder
> >> > "qryResultater" !
> >> >
> >> > Skal den så bare hedde
> >> > data.Open "SELECT * FROM qryResultater", strConnect ???
>
> >Hvor skal jeg så skrive:
> >SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
>
> Det skal du ikke. Du har jo lavet forespørgslen i Access i stedet og
> kalder den så bare direkte.
>
> Med andre ord, har du to muligheder for at lave en forespørgsel:
> 1. Du kan lave den i Access (inkl. joins, betingelser osv.) og så
> kalde forespørgslen direkte.
> 2. Du kan selv "formulere" SQL'en til forespørgslen (inkl. joins,
> betingelser osv.) på din ASP side.
>
> Hvilken der er at foretrække ved jeg egentlig ikke. Jeg plejer altid
> at bruge metode 2 - selv om jeg ofte bruger forespørgselsgitteret
> (QBE) til at "fifle" SQL'en på plads, især hvis det er lidt mere
> komplekse forespørgsler.
>
> Jeg synes fordelen ved at have hele SQL'en på ASP-siden er, at det er
> nemmere at gennemskue ASP-siden. Plus at man ikke risikerer uventede
> konsekvenser, hvis man har brugt (Access-)forespørgslen flere steder
> og så bagefter retter i den.
>
> Om der er nogle ressource-mæssige fordele ved den ene frem for den
> anden ved jeg ikke. I andre databaser (fx MS SQL) bruger man stored
> procedures, som svjv gemmes i databasen for hurtigere tilgang, men
> sådan er det vist ikke i Access.
> (Hvis nogen har en mening om, at den ene metode er bedre end den
> anden, må I gerne kommentere!)
>
>
>
> Mvh. Jørn
Tak for det
Så tror jeg at jeg vil hente data fra forespørgslen, og så lave kriterierne
i asp.
--
Med venlig hilsen
Erik Isager
| |
Ukendt (25-11-2006)
| Kommentar Fra : Ukendt |
Dato : 25-11-06 22:17 |
|
> 1. Du kan lave den i Access (inkl. joins, betingelser osv.) og så
> kalde forespørgslen direkte.
> 2. Du kan selv "formulere" SQL'en til forespørgslen (inkl. joins,
> betingelser osv.) på din ASP side.
>
> Hvilken der er at foretrække ved jeg egentlig ikke. Jeg plejer altid
> at bruge metode 2 - selv om jeg ofte bruger forespørgselsgitteret
> (QBE) til at "fifle" SQL'en på plads, især hvis det er lidt mere
> komplekse forespørgsler.
>
> Jeg synes fordelen ved at have hele SQL'en på ASP-siden er, at det er
> nemmere at gennemskue ASP-siden. Plus at man ikke risikerer uventede
> konsekvenser, hvis man har brugt (Access-)forespørgslen flere steder
> og så bagefter retter i den.
>
> Om der er nogle ressource-mæssige fordele ved den ene frem for den
> anden ved jeg ikke. I andre databaser (fx MS SQL) bruger man stored
> procedures, som svjv gemmes i databasen for hurtigere tilgang, men
> sådan er det vist ikke i Access.
> (Hvis nogen har en mening om, at den ene metode er bedre end den
> anden, må I gerne kommentere!)
Mange gange når det drejer sig om SELECT forespørgsler skal der jo
flettes nogle variabler ind i SQL udtrykket og så er der kun metode 2.
Hvis det er action forespørgsler uden parametre kan de fint ligge som
forespørgsler i databasen og og aktiveres ved hjælp af asp kode.
Stored procedures er ikke kommet til Acces endnu men SQL server
og mySQL kan begge.
Med venlig hilsen
Tom Jensen
- Læs mere om asp og databaser her -
www.ffsoft.dk
| |
Is (25-11-2006)
| Kommentar Fra : Is |
Dato : 25-11-06 23:10 |
|
"Is" <detteerminnewsgruppemailadresse2@get2net.dk> skrev i en meddelelse
news:45683ad5$0$49197$14726298@news.sunsite.dk...
>
> "Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
>
> > > Hvordan får jeg fat i forespørgslen ???
> >
> > [snip]
> >
> > > den forespørgsel jeg gerne vil hente fra hedder
> > > "qryResultater" !
> > >
> > > Skal den så bare hedde
> > > data.Open "SELECT * FROM qryResultater", strConnect ???
> >
>
> Hvor skal jeg så skrive:
>
> SELECT * FROM foo INNER JOIN bar ON foo.X = bar.X
>
Jeg kan forstå, at hvis jeg vil anvende kriterier, hvilket jeg gerne vil, så
skal jeg bruge den sidste !!
Hvordan ?
--
Med venlig hilsen
Erik Isager
| |
Jens Gyldenkærne Cla~ (25-11-2006)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 25-11-06 23:19 |
|
Tom Jensen skrev:
>> 1. Du kan lave den i Access (inkl. joins, betingelser osv.)
>> og så kalde forespørgslen direkte.
>> 2. Du kan selv "formulere" SQL'en til forespørgslen (inkl.
>> joins, betingelser osv.) på din ASP side.
> Mange gange når det drejer sig om SELECT forespørgsler skal
> der jo flettes nogle variabler ind i SQL udtrykket og så er
> der kun metode 2.
Ikke nødvendigvis. Man kan sagtens lave grundforespørgslen - med
joins, generelle betingelser og feltliste - i Access, og så sætte
yderligere kriterier på i asp.
Eksempel:
Access:
fsp_godkendte_brugere (forespørgsel gemt i Access):
SELECT b.*, p.bynavn
FROM brugere b LEFT JOIN postnumre p
ON b.postnr = p.postnr
WHERE b.godkendt = True
Asp:
SELECT * FROM fsp_godkendte_brugere WHERE postnr = '2000'
> Stored procedures er ikke kommet til Acces endnu men SQL
> server og mySQL kan begge.
Det umiddelbare alternativ til en gemt forespørgsel i Access er en
visning (view) - der også eksisterer i såvel MSSQL som (nye
udgaver) af MySQL.
Lagrede procedurer kan en hel del mere, men de er også noget mere
specialiserede end visninger - en lagret procedure kan alene kaldes
med de parametre man har defineret for den, mens en visning i store
træk anvendes som en normal tabel.
PS: Er der nogen speciel grund til at du ikke anvender en
signaturadskiller?
Læs evt. < http://usenet.dk/netikette/signatur.html>
--
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
| |
|
|