ik heb een tabel met daarin songteksten, er zijn van bepaalde bands wel een stuk of 50 songteksten, en ik wil dus een bandbrowse systeempje erin doen, het werkt allemaal... maar als ik dus van een band 50 teksten heb, komt daar 50x die band te staan.
Hoe kan ik zorgen dat iedere band maar 1x daar komt te staan?



normaliseren? :S
Je moet hier de vragen uitgebreid stellen anders schiet het niet op ;)

En ja Elwin ... uitleg bitte :)
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?
1 tabel met songteksten
1 tabel met bands

en die dan aan elkaar koppelen
Ik ruik een tutorial.

// 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
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?


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 :| ?
En op die manier van Arend dan? Dat is een goede toch? Let wel op dat:

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.

Reageren