Re: dobbelt betingelser
  Home FAQ Contact Sign in
dk.edb.database only
 
Advanced search
POPULAR GROUPS

more...

 Up
Re: dobbelt betingelser         

Group: dk.edb.database · Group Profile
Author: Troels Arvin
Date: Aug 23, 2008 04:42

N9 wrote:
> Overstående tabel, ville jeg gerne, at hvis jeg spørge på emne = 5, så
> ville jeg gerne have alle de emne række som er tilknyttet til ref 1 og
> 2, da ref 1 og 2 indholder 5.
> SÃ¥ resultat bliver 2,4,5

Forespørgslen kan udtrykkes vha. en sub-query- eller en self-join-
konstruktion. Personligt finder jeg sub-query konstruktionen mest læsbar.
Ud fra en performance-mæssig betydning burde det være lige meget hvilken
du vælger, idet dit DBMS' optimizer normalt vil udføre begge
konstruktioner på samme måde.

Sub-query-konstruktionen:

SELECT DISTINCT emne
FROM tabel2
WHERE ref IN
(
SELECT ref
FROM tabel2
WHERE emne=5
);

Join-konstruktionen, læsevenlig form:

SELECT DISTINCT t2B.emne
FROM tabel2 AS t2A
JOIN tabel2 AS t2B USING(ref)
WHERE t2A.emne=5;

Join-konstruktionen, mere portabel (og nogle vil sige "sikrere" form,
fordi USING ikke anvendes):

SELECT DISTINCT t2B.emne
FROM tabel2 t2A
JOIN tabel2 t2B ON t2A.ref=t2B.ref
WHERE t2A.emne=5;

--
Troels
no comments
diggit! del.icio.us! reddit!