18. april 2006 - 16:40Der er
7 kommentarer og 1 løsning
Forespørgsel - en record
Hej
Jeg har to tabeller
t_VareKartotek ID VareTekst VareNummer
t_VareKartotekPICS VareID (Relation til ID fra den anden tabel) PicPath
Det er altså muligt at have flere billeder på et produkt, men hvordan laver jeg et select der henter alle vare og giver mig 1 billede (PicPath) fra den anden tabel. Kan man lave en begrænsning på hvor mange records en JOIN laver.
Nej, ikke på den måde. Men du kan angive, om du vil have den største eller mindste:
SELECT ID, VareTekst, VareNummer, MAX(PicPath) FROM t_VareKartotek INNER JOIN t_VareKartotekPICS ON ID=VareID GROUP BY ID, VareTekst, VareNummer WHERE VareNummer = 99939
SELECT ID, VareTekst, VareNummer, MAX(PicPath) FROM t_VareKartotek INNER JOIN t_VareKartotekPICS ON ID=VareID WHERE VareNummer = 99939 GROUP BY ID, VareTekst, VareNummer
Men måske var jeg i det hele taget lidt hurtig der. Faktisk kan du godt angive, hvor mange rækker, du ønsker retur. Hvis du derfor kun selekterer 1 vare ad gangen, kan du også bruge denne her:
SELECT TOP 1 ID, VareTekst, VareNummer, PicPath FROM t_VareKartotek INNER JOIN t_VareKartotekPICS ON ID=VareID WHERE VareNummer = 99939
Det er noget møg, håbede at der var en let løsning, da jeg skal bruge en repeater i ASP.NET til at 'loope' gennem mine data, så er en samlet forespørgsel lettere, men så må jeg lave et felt i VareKartotekPics hvor man kan definere om det er det billede der skal vises,
SELECT ID, VareTekst, VareNummer, MaxPicPath FROM t_VareKartotek INNER JOIN (SELECT Max(PicPath) AS MaxPicPath, VareID FROM t_VareKartotekPICS GROUP BY VareID) t_TempTable ON t_VareKartotek.ID = t_TempTable.VareID WHERE VareNummer = 99939
Tusind tak, det var lige noget jeg kunne bruge, at få det samlet i et select gør min programmerings opgave meget lettere, så læg et svar så du kan få points.
Hmm.. Hvor er lige forskellen til den første SQL jeg gav dig 18/04-2006 18:55:59?
Hvis der ellers kun er én vare pr. varenummer skulle det vel give samme resultat, eller overser jeg noget. Det er sent, jeg er træt og sulten, så det kan godt tænkes... :-)
Næ du har ret, de er ens. Det havde jeg ikke set, jeg havde bildt mig ind at der var hoget i vejen med din løsning ....
kxh kan bruge den han vil, fordelen ved min er at du ikke skal GROUP'e på mange kolonner, fordi grupperingen foregår inden der joines.
I øvrigt har ingen af os tænkt på havd der sker hvis der intet billede er; så kommer varen ikke med. Det skal være et OUTER JOIN:
SELECT ID, VareTekst, VareNummer, MaxPicPath FROM t_VareKartotek LEFT OUTER JOIN (SELECT Max(PicPath) AS MaxPicPath, VareID FROM t_VareKartotekPICS GROUP BY VareID) t_TempTable ON t_VareKartotek.ID = t_TempTable.VareID
Vil du have nogle point?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.