For det første. Dit eksempel er ikke godt. For en given ordre hører vel kun til hos een kunde? Så det er en een-til-mange relation og du skal ikke bruge en relationstabel.
Samme ordre kan vel kun tilhøre et firma? I så fald er det nemlig ikke en mange til mange-relation, men en til mange, og du skal ikke splitte den del op.
Tænkte nok der var noget jeg ikke havde fået helt fat i. Hvad så hvis jeg også har en varertabel. Hver ordre kan indeholde flere varer og hver varer kan være i flere ordre. Skal den relation så ikke laves i en ekstra tabel?
Jo, ordre <-> varer skal være en relationstabel da det ganske korrekt er en *:*-relation.
Husk i øvrigt at man som oftest aldrig skal bruge alle data i relationstabellen, men kun skal bruge for en bestemt værdi af den ene side af relationen. Det giver med andre ord mest mening først at finde ordren, og så bagefter køre via relationstabellen for at få vareoplysninger.
SELECT * from tbl_ordre , tbl_varer, tbl_ordre_varer where tbl_ordre_varer.vare_id = tbl_vare.id and tbl_ordre_varer.ordre_id = tbl_ordre.id and tbl_ordre_varer.ordre_id = 1
Ikke noget pjat :). Der er jo ingen nulls i det her. Enten er der en hel relation eller der er slet ikke nogen. Når du kommer til at styre skærmbilleder, kan det være at du vil have specielle ordre-liner, f.eks. rene tekstlinier, formatteringslinier eller mellemregninger. Og så kan det komme på tale med andre typer joins. Men de kan også ligge i en helt anden tabel og hentes med en union. Og du skal have et sekvensnummer på dine ordrelinier, så du kan være sikker på rækkefølgen i dine skærmbilleder og udskrifter.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.