Avatar billede AnyFellow Mester
22. august 2016 - 11:55 Der er 8 kommentarer og
1 løsning

Check om værdi findes i en af to tabeller

Jeg er i gang med at lave et webinterface til data fra et udfaset system, idet vi af historiske hensyn skal kunne lave opslag i dette system.

Jeg har 2 tabeller, tabel1 og tabel2. Begge tabeller indeholder de samme felter, men ikke nødvendigvis de samme data (i know, normalisering, men jeg har ikke lyst til at manipulere disse data, idet hele opbygningen helst skal være magen til den opbygning systemet havde oprindeligt).

Jeg har et id og skal undersøge om der findes poster i en af tabellerne der matcher, idet det afgør hvordan data skal hentes fra en masse andre tabeller.

Hvordan gør det jeg smartest?

Min første indskydelse var at lave en SELECT  i den ene tabel og så på baggrund af den lave en SELECT i den anden tabel, hvis der ikke blev fundet noget i den første.

Hvis jeg har et id, og skal se om id'et findes i en eller
Begge tabeller
Avatar billede michael_stim Ekspert
22. august 2016 - 12:24 #1
UNION?
Avatar billede michael_stim Ekspert
22. august 2016 - 12:25 #2
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
Avatar billede AnyFellow Mester
22. august 2016 - 12:45 #3
Super, tak for hjælpen :)
Avatar billede arne_v Ekspert
22. august 2016 - 14:05 #4
Hvis du skal vide hvilken tabel data kom fra, saa er der et lille trick:

SELECT 'table1' AS source,field1,field2,field3 FROM table1
UNION
SELECT 'table2' AS source,field1,field2,field3 FROM table1
Avatar billede arne_v Ekspert
22. august 2016 - 16:18 #5
(og saa var der en copy paste error - den sidste table1 skal naturligvis vaere table2)
Avatar billede vagnk Juniormester
22. august 2016 - 19:10 #6
Og jeg vil tilføje
ORDER BY 1
Sår får du resultaterne fra den første tabel først
Avatar billede vagnk Juniormester
22. august 2016 - 19:16 #7
Der er osse den med (lidt som du er inde på i næstsidste afsnit)
SELECT table1.field
WHERE table1.field NOT IN
SELECT table2.field
Avatar billede michael_stim Ekspert
22. august 2016 - 19:28 #8
#7

Den tager kun dem der ikke er i tabel 2. Den tager ikke höjde for de records hvor der er data i både tabel 1 og tabel 2 samt dem der eksisterer i tabel 2 men ikke i tabel 1.
Avatar billede vagnk Juniormester
24. august 2016 - 12:40 #9
kfisker skriver i næstsidste afsnit:
Min første indskydelse var at lave en SELECT  i den ene tabel og så på baggrund af den lave en SELECT i den anden tabel, hvis der ikke blev fundet noget i den første.

Indrømmet - ved nærmere læsning ser næstsidste afsnit afgjort ud som kfiskers første indskydelse så UNION er sagen.
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