Lav en ekstra tabel: tilmeldinger:
id | bruger_id | hold_id
Jeg vil sætte en SQL-sætning ind (med JOIN) senere.
/
lakridserne
Brug det på denne måde:
SELECT tabel.kolonne, tabel2.kolonne FROM tabel JOIN tabel2 ON tabel.hold_id=tabel2.hold_id ORDER BY tabel.kolonne
/
lakridsernePS: Bare skriv hvis jeg skriver så du ikke forstår det.
Det skal lige sige at det er en MySQL base med MyIsam tabeller;
jeg spurgte en kammerat der har arbejdet noget mere med baser end jeg har, han snakkede om at jeg kunne bruge foreign keys. jeg undersøgte dette og kom frem til at MyIsam ikke understøtter dette men der i mod InnoDB.
>>lakridserne: jeg har lidt svært ved at gennemskue din anden post.
er der nogen fordele ved at bruge join frem for foreign keys?
./psycosoft-funware :)
Nej nu var det bare den løsning jeg ville vælge.
Vidste faktisk ikke der var noget der hedder forgein keys - men undersøgte det lige...
/
lakridserne
Join og forgein keys er to forskellige ting, de har intet med hinanden at gøre.
forgein keys er til opsætning af din kolonne i tabel, hvor join bliver brugt i en sql sætning.
Tak dkfire - der kan man se hvor lidt man egentlig ved...
/
lakridserne
hvis jeg har 2 MyISAM tabeller, en med alle mine brugere og en der holder på mine hold.
hvordan binder jeg så smartest user_id og event_id sammen i en InnoDB tabel med foreign keys rent php-kode messigt?
jeg læste på hvordan man sætter foreign keys op igennem phpMyAdmin, men jeg kan ikke helt gennemskue hvordan jeg så får det til at fungere rent praktisk :)
./psycosoft-funware :)
så skal du bruge join, som dkfire skrev om
/
lakridserne
nu blev jeg da en del klogere :)
kan i begge ikke ligge et svar så vi kan få uddelt nogle point?
./psycosoft-funware :)
Og hvis jeg maa have lov til at boeje det i neon.
JOIN bruges i SELECT til at flette to tabeller sammen.
FOREIGN KEY bruges i CREATE TABLE til at definere en sammehaeng mellem tabeller. En FOREIGN KEY vil normalt betyde at de 2 tabeller skal joines i forskelleige queries.
Det primaere formaal med FOREIGN KEY er at sikre REFERENTIEL INTEGRITET d.v.s. at hvis man peger paa noget saa skal det man peger paa eksistere.
Det klassiske eksempel er nok postnumre og by.
adresse
-------
id
vej
nummer
postnr
postdistrikt
------------
postnr
by
Her vil man jo typisk lave en JOIN som:
SELECT * FROM adresse JOIN postdistrikt ON adresse.postnr=postdistrikt.postnr
Men lad os kigge paa foelgende INSERT saetninger:
INSERT INTO postdistrikt VALUES(8000, 'Aarhus C');
INSERT INTO postdistrikt VALUES(7100, 'Vejle');
INSERT INTO postdistrikt VALUES(6000, 'Kolding');
INSERT INTO adresse VALUES(1, 'Avej', '1. th', 8000);
INSERT INTO adresse VALUES(2, 'Bvej', '2. tvh', 6000);
INSERT INTO adresse VALUES(3, 'Cvej', '3. mf', 80000);
Uden brug af FOREIGN KEYS saa virker de INSERT fint, men adresse #3 kommer ikke med i SELECT output fordi postnummer er skrevet forkert.
Hvis man har defineret en FOREIGN KEY fra adresse.postnr til postdistrikt.postnr, saa vil den forkerte INSERT give en fejl.
Og det er altid godt at forhindre forkerte data i at komme ind i ens database.
Og som naevnt i MySQL er det kun InnoDB tabeller som har support for FOREIGN KEYS.
Og hvis jeg maa have lov til at boeje det i neon.
JOIN bruges i SELECT til at flette to tabeller sammen.
FOREIGN KEY bruges i CREATE TABLE til at definere en sammehaeng mellem tabeller. En FOREIGN KEY vil normalt betyde at de 2 tabeller skal joines i forskelleige queries.
Det primaere formaal med FOREIGN KEY er at sikre REFERENTIEL INTEGRITET d.v.s. at hvis man peger paa noget saa skal det man peger paa eksistere.
Det klassiske eksempel er nok postnumre og by.
adresse
-------
id
vej
nummer
postnr
postdistrikt
------------
postnr
by
Her vil man jo typisk lave en JOIN som:
SELECT * FROM adresse JOIN postdistrikt ON adresse.postnr=postdistrikt.postnr
Men lad os kigge paa foelgende INSERT saetninger:
INSERT INTO postdistrikt VALUES(8000, 'Aarhus C');
INSERT INTO postdistrikt VALUES(7100, 'Vejle');
INSERT INTO postdistrikt VALUES(6000, 'Kolding');
INSERT INTO adresse VALUES(1, 'Avej', '1. th', 8000);
INSERT INTO adresse VALUES(2, 'Bvej', '2. tvh', 6000);
INSERT INTO adresse VALUES(3, 'Cvej', '3. mf', 80000);
Uden brug af FOREIGN KEYS saa virker de INSERT fint, men adresse #3 kommer ikke med i SELECT output fordi postnummer er skrevet forkert.
Hvis man har defineret en FOREIGN KEY fra adresse.postnr til postdistrikt.postnr, saa vil den forkerte INSERT give en fejl.
Og det er altid godt at forhindre forkerte data i at komme ind i ens database.
Og som naevnt i MySQL er det kun InnoDB tabeller som har support for FOREIGN KEYS.
>>arne_v: fantastisk det satte lige flaget på kransekagen :D
det er faktisk det jeg havde lidt svært ved at forstå ved de tutorials jeg havde fat i, men nu faldt det hele på plads. takker :)
du skal være velkommen til at ligge et svar, da dette også burde premieres med lidt point :)
>>dkfire: du postede kun en kommentar, så det bliver lidt svært at uddele point til denne :)
>>dkfire: kan du ikke lægge et svar så vi kan få lukket dette spm? :)
./psycosoft-funware :)
Jo det kan jeg vel godt.
Rent tilfælde jeg kiggede forbi.