webForumDet fria alternativet

ändra del av en post

7 svar · 361 visningar · startad av MAge

MAgeMedlem sedan apr. 200333 inlägg
#1

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
#2

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
#3

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
#4

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
#5

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
#6

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
#7

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
#8

antar att de blir till att koda om en del av sidan :)

Men du ska ha tack för den snabba responsen

/MAge

142 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)