Jeg har en tabel med felterne a og b. Ideen er at a-værdierne er linket sammen af optil flere b-værdier.
Jeg står i et problem hvor jeg for en 2 givne a-værdier, a1 og a2, gerne vil finde de b-værdier der kun tilhører a1 eller a2. Altså de b-værdier der tilhører hver af de 2 a-værdier men ikke linker dem sammen.
Det bruger jeg også men jeg leder efter en metode til at finde alle b-værdier der ikke linker a-værdier sammen i par.
Indtil videre er jeg nået frem til:
SELECT DISTINCT t1.a, t2.b FROM T AS t1, T AS t2 WHERE t1.a != t2.a AND t1.b != t2.b AND t1.b IN (SELECT t3.b FROM T AS t3 WHERE t3.a = t2.a) AND t2. NOT IN (SELECT t4.b FROM T AS t4 WHERE t4.a = t1.a);
Det jeg ønsker er alle b-værdierne der IKKE linker a-værdier sammen men hvor a-værdierne er linket sammen af nogle b-værdier. Så to a-værdier der er linket sammen af nogle b-værdier der vil jeg gerne finde resten af b-værdierne der ikke linker dem sammen.
SELECT DISTINCT t1.a, t2.b FROM T AS t1, T AS t2 WHERE t1.b IN (SELECT t3.b FROM T AS t3 WHERE t3.a = t2.a) AND t2. NOT IN (SELECT t4.b FROM T AS t4 WHERE t4.a = t1.a);
Så spørgsmålet er hvordan man optimerer denne forespørgsel mest muligt.
Her er noget testdata: +--------+------+ | a | b | +--------+------+ | 1 | 1 | | 1 | 2 | | 1 | 3 | | 2 | 1 | | 2 | 3 | | 3 | 4 | +--------+------+
I dette tilfælde skal forespørgslen finde sættet 2, 2 da den eneste b-værdi der ikke linker a=2 til a=1 er b=2. Altså a=2 mangler b=2 før de passer sammen.
Meningen er at a1 og a2 skal have nøjagtigt de samme b-værdier hvis de bare har en b-værdi til fælles.
Det er lidt lakrids men det er jo også derfor jeg poster det her inde.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.