[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