MAgeMedlem sedan apr. 200333 inlägg hej,
har en MySQL databas med två tabeller där skivor respektive kategori är listade. Ett av fälten i `skivor` innehåller "kategori" och den sparas på följande sätt.
,kategori1,kategori2,kategori3,
nu är det så att jag har möljligheten att ändra namnet på posterna i tabellen för kategorierna, men vill även att skivtabellen skall uppdateras
så undrar om det är möljligt att ändra en del av en post.
ex. om jag ändrar kategori2 till kategori4 i skall skivor ändras till ,kategori1,kategori4,kategori3
funderar på en lösning om det går att göra en relation mellan tabellen skivor och kategori. Men min kunskap om databaser sträcker sig inte så långt så ifall detta är möjligt får ni gärna posta hur man gör :)
/MAge
cyprysMedlem sedan dec. 20003 563 inlägg Utan att sätta mig in i frågan allt för mycket verkar det som du just målat in dig i ett hörn p.g.a. felaktigt tänkande från början.
Om du någon gång tänker att du vill spara strängen "v1,v2,v3,v4,v5" i ett fält för att sedan kunna redigera strängen så är du ute på fel väg.
Istället ska du skapa en relation där du kan skapa _multipla_ egna poster i ytterligare en tabell för varje skiva.
MAgeMedlem sedan apr. 200333 inlägg skjuter ut i tomma intet nu men..
så om jag har tabellen skivor
____________________________
|__ID__|__kategori__|__info__|
|__10__|____________|__blab__|
|__11__|____________|__blob__|
och tabellen kategori
_______________________________________________________
|__skivID__|__kategori_1__|__kategori_2__|__kategori_4__|
|____10____|______________|_______X______|______________|
|____11____|_______X______|_______X______|_______X______|
hur får jag då ut skivorna med deras respektive kategori?
/MAge
cyprysMedlem sedan dec. 20003 563 inlägg Kategorierna för en speciell skiva får du ut genom sql-satsen
select kategori1, kategori2, kategori3 from kategori where skivID = 10
vilket inte är skalbart på något vackert sätt.
En bättre lösning skulle fortfarande vara ifall du skapar två ytterligare tabeller.
tbl_kategori
ID | col_namn
tbl_kat_links
ID | col_skiva | col_kategori
Där kan du enkelt skapa nya kategorier i tbl_kategori och lika enkelt skapa kopplingar genom att i tbl_kat_links skapa en relation mellan tbl_kat_links.col_kategori = tbl_kategori.id och därmed enkelt skapa flera poster för en skivas kategorier. :)
MAgeMedlem sedan apr. 200333 inlägg tror jag hänger med på vad du menar. Men nu till det praktiska :)
hur får jag ut allt med en SQL-fråga? vill inte fråga databasen igen medans jag loopar ut skivorna vilka kategorier dom tillhör.
har nu.
tbl_skivor:
__________________________________________________
|_ID_|_col_cdnr_|_____________col_info_____________|
|_0__|____10____|_blandade drivrutiner och backups_|
|_1__|____11____|__________mina dokument___________|
tbl_kategori:
___________________
|_ID_|_col_kategori_|
|_0__|_drivrutiner__|
|_1__|___backups____|
|_2__|___dokument___|
tbl_skivkat
______________________________
|_ID_|_col_cdnr_|_col_kategori_|
|_0__|____10____|______0_______|
|_1__|____10____|______1_______|
|_2__|____11____|______2_______|
mycket tacksam för hjälpen och den snabba responsen :bire
/MAge
MAgeMedlem sedan apr. 200333 inlägg efter lite planlöst sökande här på forumet kom jag fram till:
SELECT
tbl_skivor.*, tbl_kategori.col_kategori
FROM
tbl_skivor
LEFT JOIN
tbl_skivkat ON tbl_skivor.col_cdnr = tbl_skivkat.col_skiva
LEFT JOIN
tbl_kategori ON tbl_skivkat.col_kategori = tbl_kategori.ID
och då får jag ut:
0 | 10 | blandade drivrutiner och backups | drivrutiner
0 | 10 | blandade drivrutiner och backups | backups
1 | 11 | mina dokument | dokument
går det inte att få ut skivorna med alla sina kategorier på samma rad?
/MAge
cyprysMedlem sedan dec. 20003 563 inlägg Varför vill du ha ut dem på samma rad?
Svaret är ett egentligen svagt övertygande nej.
Man kan inte/ska inte dynamiskt skapa nya kolumner för varje svar/kategori du vill presentera.
Styrkan hos databaser ligger just i den fasta uppbyggnaden av fasta kolumner och den variabla mängd poster.
Beroende på hur du använder utdatan ska du stega igenom alla poster per skiva och därigenom bygga upp din kommaseparerade kataegoristräng.
MAgeMedlem sedan apr. 200333 inlägg antar att de blir till att koda om en del av sidan :)
Men du ska ha tack för den snabba responsen
/MAge