t2 indeholder referencer til t1 via id. Derudover kan den så have en index. Altså t2: id id_t1ref transport 1 4 cykel 2 4 bil 3 4 tog 4 5 bil 5 5 cykel
Hvis jeg nu laver min normale join: SELECT navn,tranport FROM t1 JOIN t2 ON t1.id=t2.id_t1ref Output: navn transport jacob cykel jacob bil jacob tog peter bil peter cykel
Problemet er, at jeg helst ikke vil have gentagelser af data fra navnet. Jeg vil blot have følgende output:
navn transport jacob cykel peter bil
(Jeg kan af andre grunde ikke bruge group by t1.navn)
1) Du er reelt ligeglad med, om det er den først registrerede værdi, der returneres. Her byder en gruppering på navn med enten en MIN eller MAX funktion på transport sig til:
SELECT navn, MIN(t2.tranport) AS transport FROM t1 JOIN t2 ON t1.id=t2.id_t1ref GROUP BY navn
2) Du bruger en subselect til at indkredse den t2.id, som er lavest, hvorved du får udvalgt den tidligst registrerede transport(metode):
SELECT navn,tranport FROM t1 JOIN t2 ON t1.id=t2.id_t1ref WHERE t2.id = (SELECT MIN(id) FROM t2 as t2s where id_t1ref = t2.id)
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.