|
| Vise data fra anden tabel Fra : Ukendt |
Dato : 28-08-08 22:38 |
|
Hej.
Jeg er lidt i tvivl om det er i min database eller i programmeringen af min
applikation eller evt. begge steder, at jeg kan/skal programmere, hvis jeg
vil vise data fra to tabeller.
Et klassisk og håndgribeligt eksempel følger her:
tblVARER (v.)
VareID, pk, integer
Varenavn, varchar
Pris, float
tblKUNDER (k.)
KundeID, pk, integer
Kundenavn, varchar
tblSALG (s.)
ID, pk, integer
Kunde, fk, integer
Dato, Dato
VareID, fk, integer
Antal, integer
(Samlet pris, integer)
Her er meningen, at jeg i min tabel skal have vist:
s.dato, k.kundenavn, v.varenavn, s.antal, s.samletpris
Jeg ved, at s.samletpris er et "fiktivt felt" som jeg opretter og beregner
runtime så den ikke ligger og fylder i databasen.
Mit problem er dog, at få vist kundenavn og varenavn i stedet for kundeID og
vareID.
Jeg har forsøgt mig med i Firebird at oprette tabellerne som ovenfor, hvor
de primære og foreign keys er lavet som nævnt.
I min applikation har jeg indsat følgende SQL
SELECT s.id, s.kunde, s.dato, v.varenavn, s.antal
FROM tblSALG s JOIN tblVARER v
ON s.vareID = v.ID
og jeg har prøvet
SELECT s.id, s.kunde, s.dato, v.varenavn, s.antal
FROM tblSALG s, tblVARER v
WHERE s.VAREID = v.ID
Men umiddelbart bliver "varenavn" ikke vist korrekt, men er blank.
Jeg har i eksemplerne valgt ikke at medtage "kundenavn" for at gøre det
overskueligt indtil første problem er løst (Fremgangsmåden må være den samme
med problemet omkring at vise kundenavn)
| |
Kristian Damm Jensen (29-08-2008)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 29-08-08 10:55 |
|
Michael Sørensen wrote:
> Hej.
>
> Jeg er lidt i tvivl om det er i min database eller i programmeringen
> af min applikation eller evt. begge steder, at jeg kan/skal
> programmere, hvis jeg vil vise data fra to tabeller.
>
> Et klassisk og håndgribeligt eksempel følger her:
>
> tblVARER (v.)
> VareID, pk, integer
> Varenavn, varchar
> Pris, float
>
> tblKUNDER (k.)
> KundeID, pk, integer
> Kundenavn, varchar
>
> tblSALG (s.)
> ID, pk, integer
> Kunde, fk, integer
> Dato, Dato
> VareID, fk, integer
> Antal, integer
> (Samlet pris, integer)
>
> Her er meningen, at jeg i min tabel skal have vist:
> s.dato, k.kundenavn, v.varenavn, s.antal, s.samletpris
>
> Jeg ved, at s.samletpris er et "fiktivt felt" som jeg opretter og
> beregner runtime så den ikke ligger og fylder i databasen.
> Mit problem er dog, at få vist kundenavn og varenavn i stedet for
> kundeID og vareID.
>
> Jeg har forsøgt mig med i Firebird at oprette tabellerne som ovenfor,
> hvor de primære og foreign keys er lavet som nævnt.
> I min applikation har jeg indsat følgende SQL
>
> SELECT s.id, s.kunde, s.dato, v.varenavn, s.antal
> FROM tblSALG s JOIN tblVARER v
> ON s.vareID = v.ID
>
> og jeg har prøvet
>
> SELECT s.id, s.kunde, s.dato, v.varenavn, s.antal
> FROM tblSALG s, tblVARER v
> WHERE s.VAREID = v.ID
>
> Men umiddelbart bliver "varenavn" ikke vist korrekt, men er blank.
De to eksempler er ækvivalente og - så vidt jeg kan se - korrekte. Fejlen må
ligge et andet sted.
Er du sikker på at dine data er i orden?
--
Venlig hilsen /Best regards
Kristian Damm Jensen
| |
|
|