Avatar billede morteeart Nybegynder
18. december 2004 - 16:36 Der er 7 kommentarer og
1 løsning

lægge 2 tabeller sammen via. JOIN

Hej

Har aldrig prøvet at lave et JOIN før, men går ud fra at det er det man skal bruge

Jeg har 2 identiske tabeller

id | navn | tekst
1    hej    :P
2    med    :D
3    dig    :(

og

id | navn | tekst
4    jul    julegaver

ID'en er i aldrig ens (da de er timestamt, bare ikke i mit eksempel)

Og så jeg gerne lægge den ene tabel neden unden den anden.

Men hvordan gøres dette ?
Avatar billede dsj Nybegynder
18. december 2004 - 17:02 #1
Ved join lægges to tabeller sammen på ens værdier i en given kolonne, hvilket vidst ikke er det du vil. Jeg tror du har brug for en UNION i stedet:

SELECT * FROM <tabel1>
UNION
SELECT * FROM <tabel2>

Bemærk at UNION kun kan bruges fra og med MySQL version 4
Avatar billede dsj Nybegynder
18. december 2004 - 17:02 #2
Resultatet af den viste UNION vil ud fra dit eksempel blive:

1    hej    :P
2    med    :D
3    dig    :(
4    jul    julegaver
Avatar billede morteeart Nybegynder
18. december 2004 - 17:13 #3
okay, hvad hvis jeg så skal gøre sådan her:

SELECT * FROM <tabel1>
UNION
SELECT * FROM <tabel2>

WHERE id='4'

skal der så WHERE på begge sætninger `?
Avatar billede dsj Nybegynder
18. december 2004 - 18:07 #4
Lige præcis. Når du filtrer skal det være på hver enkelt SELECT-statement. Det eneste UNION gør er, at lægge de to resultater sammen til ét; kravet er, at alle SELECT-statements i samme UNION skal returnere det samme antal kolonner, der samtidig skal være af samme type. Dermed også sagt, at du kan have flere end 2 SELECT-statements i en UNION:

SELECT * FROM <tabel1> WHERE id=4
UNION
SELECT * FROM <tabel2> WHERE id=4
UNION
SELECT * FROM <tabel3> WHERE id=4 AND navn='hej'
Avatar billede morteeart Nybegynder
18. december 2004 - 18:15 #5
hmm, så ved jeg ikke om dette er optimalt når det id jeg skal bruge kun står i en af tabellerne, da det ikke retunerer noget som helst på den måde.

Har også prøvet

SELECT * FROM produkter,tilbud WHERE produkter.id='4' OR tilbud.id='4'

Men der sker nogle underligt fejl, hvor at den kun tager et id, som er forkert.
Avatar billede dsj Nybegynder
18. december 2004 - 18:22 #6
En ting jeg måske ikke helt forstår, er hvorfor du har to helt ens tabeller der alligevel ikke indeholder de samme id'er. Hvorfor ikke bare slå dem sammen til én tabel og undgå alle problemerne?
Avatar billede morteeart Nybegynder
18. december 2004 - 18:30 #7
pga. den ene tabel, indeholder tilbud, og den anden produkter (webshop)

så jeg fandt det smartest at lave 2 tabeller, men istedet skulle jeg måske lave en true/false (det hedder enum ikke?) felt, som angiver om det er et tilbud så.
Avatar billede dsj Nybegynder
18. december 2004 - 18:44 #8
Jeg tror du vil slippe langt nemmere, hvis du tilføjer en int-kolonne, og så siger, at tilbud har værdien '1' i den nye kolonne, og produkterne '2'.
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