mysql
Hoe kan ik zorgen dat iedere band maar 1x daar komt te staan?
Elwin
normaliseren? :S
En ja Elwin ... uitleg bitte :)
anders kan je voor elke band de waarden uitlezen. maar als er steeds meer bands komen is dit ook niet te doen
misschien een aparte tabel met alle bandnamen (met IDs) en dan uit de andere tabel (met de teksten) de gegevens er uit halen met de IDs van de band-tabel?
1 tabel met bands
en die dan aan elkaar koppelen
// tabel met bands
create table bands (
band_id int(5) auto_increment,
band_naam varchar(30) not null
primary key(band_id);
unique(band_naam)
);
create table songtexten (
songtext_id int(5) auto_increment,
band_id int(5) not null,
// etc.. etc..
songtext_text text not null,
primary key(songtext_id),
);
Het koppelen gaat alsvolgt:
[1] Voeg een band toe
[2] Voeg een songtext toe met een verwijzing naar de band_id
[3] Het selecteren van songtexten gaat als volgd:
SELECT songtexten.*, bands.*
FROM songtexten, bands
WHERE songtext.band_id = bands.band_id
Hou wel rekening met de volgende dingen, het loopt fout wanneer de songtext.band_id vewijst naar een band_id die niet bestaat. Zorg dus wanneer er een band verwijderd wordt, alle songtexten die de waarde van deze band hebben verwijderd worden, of een nieuwe waarde krijgen van een geldige band_id.
Grtz,
Adje
Quote:
heb je een standaard lijstje bands of veranderen de bands ook constant?
anders kan je voor elke band de waarden uitlezen. maar als er steeds meer bands komen is dit ook niet te doen
misschien een aparte tabel met alle bandnamen (met IDs) en dan uit de andere tabel (met de teksten) de gegevens er uit halen met de IDs van de band-tabel?
anders kan je voor elke band de waarden uitlezen. maar als er steeds meer bands komen is dit ook niet te doen
misschien een aparte tabel met alle bandnamen (met IDs) en dan uit de andere tabel (met de teksten) de gegevens er uit halen met de IDs van de band-tabel?
ik heb nu ook een apparte band-tabel, maar dit is zeer onpraktisch omdat mensen songteksten toevoegen, maar als daar dan de bandnaam niet van in de bandtabel staat kan deze dus niet gevonden worden.
de songtekst tabel heeft de velden
id
artiest
titel
album
tekstzelf
ip
is er geen mogelijkheid dat je met het uitlezen iets doet dat iedere bandnaam maar 1x voor kan komen :S ?
niemand :| ?
songtext.band_id = bands.band_id
vlgns mij veranderd moet worden in:
songtexten.band_id = bands.band_id
Ik gebruikte de methode dat je of een band kan selecteren uit de bestaande bandslijst, of een nieuwe band kan toevoegen (de lijst is een <select><option value=$band_id></select> lijst, dan een input type=text, is het textveld leeg, kijk je naar de select, en of de gekozen band wel bestaat, zo niet: error, anders, band_id invoegen. Bij een nieuwe band, band toevoegen, id afvangen en songtext inserten.
maar ik dacht dat er misschien iets van een paar simpele regeltjes konden van als die $bandnaam er al is dat ie dan maar 1x komt te staan...
gewoon met het uitlezen van mysql
hoezo? je kunt toch zo in zun geheel een kolom erbij doen en dan voor allemaal een data invullen?
create table bands (
band_id int(5) not null auto_increment,
band_naam varchar(30) not null,
primary key(band_id)
);
INSERT INTO BANDS (bandnaam) SELECT bandnaam FROM songtexten group by bandnaam;
ALTER table songtexten add column band_id int(5) not null;
INSERT INTO BANDS (bandnaam) SELECT bandnaam FROM songtexten group by bandnaam;
Vervolgens: SELECT* * FROM BANDS;
met een willekeurige taal loopen door de results met de query: "UPDATE songtexten set band_id = $bandid WHERE bandnaam = $bandnaam"
Zo veel werk is het niet..