mboost-dp1
Simpelt mysql spørgsmål
- Forside
- ⟨
- Forum
- ⟨
- Support
Jeg er rimelig newb til mysql. Så er det på plads.
Jeg vil lave en database som indeholdender alle mine CD'er.
Hvis der er 10 forskellige albums med AC/DC, og jeg ønsker at indtaste Band, Title, Genre og Year, skriver jeg:
mysql> insert into CD (band, title, genre year) values ('AC/DC', 'The Razors Edge', 'Classic Rock', 1990);
(Tabellen er oprettet)
Når det næste album skal indsættes, trykker jeg "pil op" og redigerer de felter der ændrer sig (title og year) og trykker enter.
Dette gentages for samtlige albums.
Findes der ikke en lettere måde, hvor jeg lister alle albums efter hinanden, genre og bandnavn er ens hele vejen, og div. årstal efter hinanden?
Noget i stil med: (band, title, genre year) values ('AC/DC', 'The Razors Edge' 'Ballbreaker' 'etc', 'Classic Rock', 1990 1995 (etc.)); <- Virker ikke.
Er det muligt?
Har googlet, men finder kun løsninger som denne: http://www.desilva.biz/mysql/insert.html
Og så er jeg jo ikke helt ude over problemet...
Kan det gøres, sådan som jeg vil have det gjort?
Jeg vil lave en database som indeholdender alle mine CD'er.
Hvis der er 10 forskellige albums med AC/DC, og jeg ønsker at indtaste Band, Title, Genre og Year, skriver jeg:
mysql> insert into CD (band, title, genre year) values ('AC/DC', 'The Razors Edge', 'Classic Rock', 1990);
(Tabellen er oprettet)
Når det næste album skal indsættes, trykker jeg "pil op" og redigerer de felter der ændrer sig (title og year) og trykker enter.
Dette gentages for samtlige albums.
Findes der ikke en lettere måde, hvor jeg lister alle albums efter hinanden, genre og bandnavn er ens hele vejen, og div. årstal efter hinanden?
Noget i stil med: (band, title, genre year) values ('AC/DC', 'The Razors Edge' 'Ballbreaker' 'etc', 'Classic Rock', 1990 1995 (etc.)); <- Virker ikke.
Er det muligt?
Har googlet, men finder kun løsninger som denne: http://www.desilva.biz/mysql/insert.html
Og så er jeg jo ikke helt ude over problemet...
Kan det gøres, sådan som jeg vil have det gjort?
#1 som jeg læser dit spørgsmål, har det ikke så meget med mysql at gøre, som det handler om interfacet.
Du kan sagtens lave relationsdatabaser, hvor du så at sige gemmer fælles data i en tabel og variable i en anden. Du skal i dette tilfælde have en mellemliggende tabel, der peger på relationerne imellem disse tabeller.
Eks.:
TABLE (band) [id; band_name; band_leadsinger; other_stuff;]
TABLE (genres) [id; genre_name;]
TABLE (albums) [id; album_name; year;]
TABLE (relationer) [id; band_id; genres_id; albums_id;]
Du bruger så (relationer) til at knytte data sammen.
Måske er dit spørgsmål egentlig om, hvordan du putter data i din oprindelige tabel? Hvis du bruger PHP (det er næsten det samme i alle sprog), så kan du lave en parser i stil med
...som så lægger kommaseparerede input i et array, du kan indsætte i tabellen således:
Gav det mening? Svarede jeg på det rigtige spørgsmål? Vinder jeg en hest?
Du kan sagtens lave relationsdatabaser, hvor du så at sige gemmer fælles data i en tabel og variable i en anden. Du skal i dette tilfælde have en mellemliggende tabel, der peger på relationerne imellem disse tabeller.
Eks.:
TABLE (band) [id; band_name; band_leadsinger; other_stuff;]
TABLE (genres) [id; genre_name;]
TABLE (albums) [id; album_name; year;]
TABLE (relationer) [id; band_id; genres_id; albums_id;]
Du bruger så (relationer) til at knytte data sammen.
Måske er dit spørgsmål egentlig om, hvordan du putter data i din oprindelige tabel? Hvis du bruger PHP (det er næsten det samme i alle sprog), så kan du lave en parser i stil med
$albums = explode($_POST['albums'],",");
...som så lægger kommaseparerede input i et array, du kan indsætte i tabellen således:
foreach ($albums as $key => $value){
mysql_query("insert into CD values ($band, $value, etc...);
}
Gav det mening? Svarede jeg på det rigtige spørgsmål? Vinder jeg en hest?
Jeg har en tabel, den skal opdateres med flere cd'er af samme kunster og i samme genre.
I stedet for at lave det sådan:
Ved ikke om du forstod spørgsmålet, eller om det var formuleret forståeligt. Men det burde give lidt mere mening nu.
Du har vundet en hest. Den står på en mark lige uden for Bramming. Den er brun, hedder laika, er rigtig nuzzer og lystrer iøvrigt "LORTEHEST!". Du henter den på eget ansvar.
I stedet for at lave det sådan:
INSERT INTO CD (band, title, genre, year)Tænkte på om det kunne gøre i stil med:
VALUES
('AC/DC', 'Powerage', 'Classic Rock', 1978),
('AC/DC', 'Back In Black', 'Classic Rock' 1990),
('AC/DC', 'For Those About To Rock' 'Classic Rock' 1981),
(Og så videre);
INSERT INTO CD (band, title, genre year) VALUES ('AC/DC', 'The Razors Edge' 'Ballbreaker' 'endnu et albumnavn', 'Classic Rock', 1990 1995 (endnu et årstal));
Ved ikke om du forstod spørgsmålet, eller om det var formuleret forståeligt. Men det burde give lidt mere mening nu.
Du har vundet en hest. Den står på en mark lige uden for Bramming. Den er brun, hedder laika, er rigtig nuzzer og lystrer iøvrigt "LORTEHEST!". Du henter den på eget ansvar.
Xill:
Teknisk set er han layout normaliseret.. på første normal form* :-)
* Forudsat at man accepterer NULL-felter i alle normalformer (dem der ikke gør, har aldrig prøvet at lave database drevne applikationer).
Teknisk set er han layout normaliseret.. på første normal form* :-)
* Forudsat at man accepterer NULL-felter i alle normalformer (dem der ikke gør, har aldrig prøvet at lave database drevne applikationer).
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.