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 :)
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. :)
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.
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?