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?
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?
// 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
?
Onbekende gebruiker
28-05-2004 16:21
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 ?
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.