[linux-support] Mysql: simples ? select-Statement

Thomas Jampen jampen at cryptography.ch
Thu Apr 22 09:26:46 CEST 2004


On Thu, 2004-04-22 at 08:10, Christoph Scheurer wrote:
> On Thu, 22 Apr 2004 08:01:48 +0200
> Christoph Scheurer <chris at rebmatt.ch> wrote:
> 
> > On Thu, 22 Apr 2004 07:53:24 +0200
> > Markus Wernig <markus at wernig.net> wrote:
> > 
> > > Hallo
> > > 
> > > Habe ich jetzt ein Blackout oder geht das wirklich nicht:
> > > 
> > > eine Tabelle hat zwei Felder (KEY, VAL), keines unique, keines null,
> > > zusammen sind sie unique und ergeben den Primary Key. Ich will jetzt
> > > herausfinden, welcher KEY in keinem seiner VAL-Felder einen bestimmten
> > > Wert aufweist.
> > > 
> > > also:
> > > 
> > > ----------------
> > > | KEY  |  VAL  |
> > > ----------------
> > > | 1    | 2001  |
> > > | 1    | 2002  |
> > > | 1    | 2003  |
> > > | 2    | 2001  |
> > > | 2    | 2002  |
> > > | 3    | 2002  |
> > > | 3    | 2003  |
> > > | 3    | 2004  |
> > > ----------------
> > > 
> > > Die Abfrage "Welcher KEY hat in keinem VAL den Wert 2004" sollte "1 und
> > > 2" ergeben, "Welcher KEY hat in keinem VAL den Wert 2001"
> > > dementsprechend "3".
> > 
> > select key from $table where not val= '2004';
> 
> und für diesen Fall    select distinct key from $table where not val = '2004'
> 
> das distinct eliminiert doubletten

Nein, das stimmt nicht, denn dein 1. select würde ja all Einträge
zurückgeben, die nicht 2004 enthalten. Markus will aber nur die Keys,
die nirgends 2004 enthalten.

MySQL unterstützt glaube ich aber etwas wie folgendes:

CREATE TABLE new_table SELECT key, val FROM table WHERE val=2004
SELECT key FROM new_table, table WHERE NOT new_table.key=table.key

E Gruess

Tom

-- 
BOFH excuse #309:

firewall needs cooling



More information about the Linux-support mailing list