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)
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.
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)
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! :-)
Synes godt om
Ny brugerNybegynder
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.