SQL: slå ihop flera världen i SELECT-sats

Permalänk
Medlem

SQL: slå ihop flera världen i SELECT-sats

Har två tabeller, en med boktitlar och en med författare. En bok kan ju ha flera författare, och jag vill att alla författare ska listas i samma "cell" i den tabell som returneras av SELECT. Som det är nu blir den en post per författare, men med samma boktitel.

Har googlat runt lite, men hittar bara MERGE som verkar bara vara användbart när man ska spara data i en tabell.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Visa signatur

Så du söker den perfekta sidan om webbradio? Surfa då vidare till
http://www.radioworld.se
där finns allt du behöver veta om hur du drar upp en ström!

Permalänk
Medlem

tror inte det är det jag letar efter, jag skulle behöva nåt sånthär:

SELECT author1, author2, anuthor3 AS authors FROM author_table;

...så at resultatet kan skrivas:

Titel: Författare: Det Steven King, Arne Weise, Skalman

iställetför som nu:

Titel: Författare: Det Steven King Det Arne Weise Det Skalman

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem

Vad menar du med "cell". Cell som i HTML-tabellcell? Eller MySQL-tabellcell som du får ut när du kör mysql i ett konsolfönster?

I det andra fallet så vet jag inte om du kan göra det med sub-select´s men jag är mycket tveksam. Tro mig, har försökt ett tag. Varken inner- eller outer joins hjälper dig i detta skede (detta beror ju egentligen på hur databasarkitekturen ser ut).

Du säger att du idag använder två tabeller. Det är inte tre då alltså? En lookup-tabell? Hur ser strukturen ut? Jag har något liknande men använder då tre tabeller, två informationstabeller och en lookup-tabell. En författare kan ju skriva många böcker och en bok kan vara skriven av många författare. Detta är ju ett typexempel på ett många-till-många-förhållande där en lookup-tabell antagligen hade varit bra.

Visa signatur

10 RTFM
20 RTFAQ
30 STFW

Permalänk
Medlem

Jag antar att det du vill göra är en relation mellan tabellerna många till många.
Flera böcker kan ha samma författare och flera författare kan ha skrivit samma bok.

Då behöver du en mellantabell som innehåller kopplingarna, annars bryter du mot normaliseringsregeln att inte dubbellagra data.
Alltså i författartabellen behöver du bl.a. ett id och i boktabellen behöver du bl.a. ett id.
Kopplingstabellen kommer bestå av två kolumner ett för författarid och ett för bokid.
Sedan får du skriva ett lite krångligare system för utdata. Men det är det rätta sättet. (Jag är förvånad över att jag lärt mig någonting i huvudtaget från Databashantering A).

Edit: Första var man inte.

Edit2: Om du kan addera strängar med varandra så hade det ju gått att göra också. Typ Select (auth1 & auth2 & auth3) as auth from table. Men då bryter du nog mot normaliseringsregler och jag är inte säker på att sql har något system för adddering av strängar.