Avatar billede lauritsen Nybegynder
08. juni 2002 - 13:34 Der er 3 kommentarer og
1 løsning

resultat fra 2 tabeller i én

Sikkert temmelig simpelt.. men jeg kan ikke lige greje den..

Jeg har to tabeller, der hver har en kollonne med det samme navn:

appearances
+------+------+
| hero | code |
+------+------+

stories
+-------+------+-----+
| title | hero | ... |
+-------+------+-----+

Det, jeg gerne vil er at finde frem til alle forekomster fra hero-kollonnerne fra begge tabeller. Alle forskellige forekomster skal returneres, men kun en gang hver, og de skal returneres i samme kollonne.

Det returnerede skal altså være:
+------+
| hero |
+------+

Jeg har en idé om at fgl. kan fungere:

SELECT hero FROM appearances GROUP BY hero
UNION
SELECT hero FROM stories GROUP BY hero

...men da jeg bruger mysql version 3.23.49a er UNION ikke understøttet (det er den fra 4.0.0, som statig er alpha -- og jeg er ikke meget for at skulle opgradere før den bliver stable, eller at opgradere i det hele taget, nu tingene virker)
Avatar billede hansk Nybegynder
08. juni 2002 - 15:00 #1
Det er en umulig opgave som den er stillet. Når du ikke har union til rådighed kan du ikke lave det du vil.

Din mulighed er at lave forespørgslen via en temporær tabel, hvor du lægger resultatet af to sql'er ind.

Insert into tmpTable (hero) SELECT DISTINCT hero from appearances
Insert into tmpTable (hero) SELECT DISTINCT hero from stories
SELECT Distinct hero from tmpTable
Drop Table tmptable

En anden mulighed er naturligvis at du kan normalisere din database.
Avatar billede lauritsen Nybegynder
08. juni 2002 - 17:03 #2
Hmm.. Det er også ok at bruge en midlertidig tabel i mit tilfælde, da det er temmelig sjældent forespørgslen skal udføres. Tak for eksemplet. Så må jeg se om jeg på et tidspunkt kan få mig selv til at opgradere databasen og hvad der dermed følger..

Mht. normalisering, så går det ikke at lægge de to tabeller sammen (hvis jeg da husker rigtigt omkring normalisering fra database-kurset)
Avatar billede hansk Nybegynder
08. juni 2002 - 23:46 #3
Nej, men du kan hive hero ud som en selvstændig entitet.
Avatar billede lauritsen Nybegynder
09. juni 2002 - 00:00 #4
Hmm.. appearances-tabellen er allerede en sådan.. den registrerer (evt. flere) appearances i en story ("code"-kollonnen refererer til en code-kollonne i stories-tabellen), og kunne derfor (hvis det ikke var for en-til-mange-relationen) have været en kollonne "appearances" i stories-tabellen..

Så jeg kunne hive hero-kollonnen ud fra stories lave den til en tabel med en en-til-en-relation til stories. Det ville dog ikke hjælpe mig specielt meget i den givne situation. Men jeg kunne måske istedet flette hero-kollonnen ind i appearances-tabellen. Kan bare ikke lige se hvordan det kan gøres smart.. Så skulle jeg måske have en kollonne mere der angav om der var tale om en hero eller en appearances, men så synes jeg det smarte ryger.. Det er i hvert fald for meget arbejde, for det eneste det løser er dette problem, der som sagt opstår meget sjældent..

Jeg har implementeret din løsning med den temporære tabel, og det virker fint! :-)
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

IT-JOB

Csis Security Group A/S

Sales Executive

Netcompany A/S

Linux Operations Engineer

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

Capgemini Danmark A/S

Finance Lead (SAP)