/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Komplimentær liste (MySQL)
Fra : Christoffer Olsen


Dato : 09-12-03 23:00

Hej

Jeg har tre tabeller:

actions {ID,name} , chain{aID,mID} og mebers {ID,name}, hvor første og
sidste er kædet sammen med chain.

Jeg kan nu godt finde de actions som en member er linket til sådan her:

SELECT action.name
FROM action, chain
WHERE actions.ID = chain.aID AND chain.mID = $id

Men hvordan finder jeg komplimentærmængden? Dvs. de actions som member
ikke bruger.

Jeg har prøvet sådan her:

SELECT action.name
FROM action, chain
WHERE action.ID = chain.aID AND chain.mID != $id

Men for at det virker skal alle actions være repræsenteret i chain,
hvilket de ikke nødvendigvis er.

Er der en måde at komme uden om mit problem på?

--
It's "Unix" if it has the "x" sound in its name - the Xbox must be
Unix then.

- from a discussion on slashdot.org

 
 
Peter Brodersen (10-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 10-12-03 00:30

On 09 Dec 2003 23:00:29 +0100, Christoffer Olsen
<christofferolsen@ninja.dk> wrote:

>Er der en måde at komme uden om mit problem på?

Kig på:
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Rewriting_subqueries

==
The queries:

SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2);
SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE
t1.id=t2.id);

Can be rewritten as:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.id IS NULL;
==

Det burde være lidt inspiration.
--
- Peter Brodersen

Ugens sprogtip: trafik (og ikke traffik)

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste