Avatar billede erik_a Novice
18. juli 2011 - 22:46 Der er 3 kommentarer og
1 løsning

Select med data fra to tabeller - måske...

Hejsa eksperter

Jeg står med et lille problem som jeg er pænt sikker på i kan finde ud af.

Jeg har to næsten ens tabeller:
tabel1: no, name, city, zip
tabel2: no, name, city, zip, read, modified
no er nøgle og kan kun forekomme 1 gang i tabel1, men flere gange i tabel2.

Tabel1 indeholder en masse data som jeg får leveret fra 3. part.
Tabel2 skal jeg opdatere.

Jeg ønsker i mit udtræk alle data fra tabel1 hvis de ikke findes i tabel2 samt nyeste record af no fra tabel2.
Illustration:

tabel1:
------------------------------------------------------------
no      |name      |zip      |city
1000    |Erik      |7800    |Skive
1001    |Hans      |7850    |Stoholm
1002    |Bjarne    |7850    |Stoholm
1003    |Allan    |7800    |Skive

tabel2:
------------------------------------------------------------
no      |name      |zip      |city      |read    |modified
1000    |Gert      |7800    |Skive    |true    |18072011
1000    |Anders    |7800    |Skive    |NULL    |18072011
1003    |Tommy    |7800    |Skive

Ønsket resultat efter select
------------------------------------------------------------
no      |name      |zip      |city     
1000  |Anders    |7800    |Skive
1001  |Hans      |7850    |Stoholm
1002  |Bjarne    |7850    |Stoholm
1003  |Tommy    |7800    |Skive

Håber i forstår meningen.
Med mit held kan dette nok ikke gøres i en enkelt mysql select sætning, men jeg bruger php, så hvis det da bare kan gøres deri på en eller anden måde.


På forhånd tak

/Erik
Avatar billede kjeldsted Novice
18. juli 2011 - 23:03 #1
Jeg ville da nok gætte på vi skal over i en PHP løsning.
Men hvis der er andre der ligger inde med en MySQL løsning, hører jeg da gerne :)
Avatar billede arne_v Ekspert
18. juli 2011 - 23:14 #2
Proev noget a la:

(SELECT no, name, city, zip FROM tabel1 WHERE no NOT IN (SELECT no FROM tabel2))
UNION ALL
(SELECT no, name, city, zip FROM tabel2 t2a WHERE modified = (SELECT MAX(modified) FROM tabel2 t2b WHERE t2a.no=t2b.no))
Avatar billede erik_a Novice
27. juli 2011 - 10:04 #3
Årh, du er for vild :-D

Foreløbige simple tests giver det rigtige resultat...
Vil du smide et svar så du kan få dine point?
Avatar billede arne_v Ekspert
27. juli 2011 - 15:00 #4
svar
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