Avatar billede netsrac Praktikant
13. marts 2003 - 13:17 Der er 3 kommentarer og
4 løsninger

Noget SQL ting...

Følgene tabeller haves:

Vare:
varenr
status

VareData:
varenr
varenavn
oprettet
pris
beskrivelse
billede

For hver record i vare kan der være flere records i vareData, jeg ønsker et udtræk som tager den nyeste record fra varedata og splejser den med den tilhørende record i vare. Hvilken der er den nyeste record i varedata ses udfra oprettet som er et datafelt.
Avatar billede sthen Nybegynder
13. marts 2003 - 13:56 #1
Der skal du have fat i JOIN.

Læs her:
http://www.mysql.com/doc/en/JOIN.html

Der er masser af eksempler (her er et uddrag af dem):
mysql> SELECT * FROM table1,table2 WHERE table1.id=table2.id;
mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> SELECT * FROM table1 LEFT JOIN table2 USING (id);
mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
    ->          LEFT JOIN table3 ON table2.id=table3.id;
mysql> SELECT * FROM table1 USE INDEX (key1,key2)
    ->          WHERE key1=1 AND key2=2 AND key3=3;
mysql> SELECT * FROM table1 IGNORE INDEX (key3)
    ->          WHERE key1=1 AND key2=2 AND key3=3;
Avatar billede netsrac Praktikant
14. marts 2003 - 08:15 #2
Ved da godt jeg skal bruge et join har også forsøgt alverden, men får aldrig det rigtige ud, jeg er ikke en af de brugere som ikke selv kan finde ud af at slå op i manualen, selvom der efterhånden kun er dem tilbage. Mangler et konkret eksempel...
Avatar billede roo104 Nybegynder
14. marts 2003 - 22:49 #3
Kan du bruge ?
SELECT varedata.varenavn, varedata.pris FROM varedata, vare WHERE varedata.varenr = vare.varenr and varedata = 'et eller andet';
Avatar billede charlieparker Nybegynder
14. marts 2003 - 23:28 #4
select v.varenr , v.status, vd.varenavn, vd.pris 
from vare v , varedata vd
where v.varenr = vd.varenr
and vd.oprettet =
(
select max(oprettet) from varedata
where varenr = v.varenr)
)
Avatar billede charlieparker Nybegynder
14. marts 2003 - 23:56 #5
Ups, en højreparantes for meget

select v.varenr , v.status, vd.varenavn, vd.pris
from vare v , varedata vd
where v.varenr = vd.varenr
and vd.oprettet =
(
select max(oprettet) from varedata
where varenr = v.varenr
)
Avatar billede htm Nybegynder
16. marts 2003 - 22:51 #6
Nu kender jeg ikke lige JOIN men du burde, som jeg forstår dig, kunne lave det sådan:

SELECT VareData.*,Vare.* FROM VareData,Vare WHERE VareData.varenr = '10' AND Vare.varenr = VareData.varenr ORDER BY oprettet LIMIT 1
Avatar billede netsrac Praktikant
30. marts 2003 - 09:44 #7
Lang tid siden, kan ikke lige huske hvordan jeg løste det, men fik det løst, i for alle lidt som tak for hjælpen.

charlieparker >> Subselects virker ikke i MySQL, ellers var det jo nemt nok :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester