Alternative zu Sub-Select Abfrage

Der MySQL Datenbank-Server für Internet- und Intranet-Lösungen.

Alternative zu Sub-Select Abfrage

Beitragvon discostew » Mi 03 Apr, 2002 11:04

Hi,

hab ne MySQl-Frage, ist auch mal ne etwas schwierigere, ich hoffe ich kann
sie erlären. Also, habe folgende Einträge in einer Tabelle:

+----+----------------+----------+------------+----------+----------+
| ID | mitarbeiter_ID | grund_ID | datum | anfang | ende |
+----+----------------+----------+------------+----------+----------+
| 1 | 0F010CBAF00 | 1 | 2002-03-28 | 13:35:33 | 13:38:32 |
| 2 | 0F010CBAF00 | 2 | 2002-03-28 | 13:38:32 | 13:38:32 |
| 3 | 0F010CBAF00 | 1 | 2002-03-28 | 16:11:43 | 16:18:07 |
| 4 | 0F010CBAF00 | 2 | 2002-03-28 | 16:18:07 | 16:18:07 |
| 5 | 0F010CBAF00 | 2 | 2002-03-28 | 16:21:11 | 16:21:11 |
| 6 | 0F010CBAF00 | 1 | 2002-03-28 | 16:20:40 | 16:21:11 |
| 7 | 0F010CBAF00 | 1 | 2002-03-28 | 16:22:17 | 16:26:07 |
| 8 | 0F010CBAF00 | 2 | 2002-03-28 | 16:26:07 | 16:26:07 |
| 9 | 0F010CBAF00 | 2 | 2002-03-28 | 16:30:10 | 16:30:50 |
| 10 | 0F010CBAF00 | 1 | 2002-03-28 | 16:28:36 | 16:30:10 |
| 11 | 0F010CBAF00 | 1 | 2002-03-28 | 16:30:50 | 11:02:23 |
| 12 | 0F010CBAF00 | 1 | 2002-04-02 | 11:00:10 | 11:02:23 |
| 13 | 0F010CBAF00 | 1 | 2002-04-02 | 11:03:09 | 11:03:52 |
| 15 | 0F010CBAF00 | 1 | 2002-04-02 | 11:29:33 | 11:37:57 |
| 17 | 0F010CBAF00 | 1 | 2002-04-03 | 08:56:33 | 09:00:59 |
| 18 | 0F010CBAF00 | 1 | 2002-04-03 | 09:21:06 | NULL |
+----+----------------+----------+------------+----------+----------+


Mein Problem ist jetzt, dass ich alle mitarbeiter_IDs brauche bei denen:

1. Die grund_ID = 1
2. datum = now()
3. ende not null

und nun das wichtigste, es darf aber auch keine Spalte mit:

1.grund_ID = 1
2. datum = now()
3. ende is null

fĂĽr diese mitarbeiter_ID existieren. Mit Sub-Selects wĂĽsste ich wie das
ginge. Man soll das mit Joins alternativ lösen können bzw. durch Verwendung von Aliases die Tabelle mit sich selber verknüpfen. Wenn jemand eine effiziente Idee hat. Bitte melden!
Vielen Dank!
discostew
 

RE: Alternative zu Sub-Select Abfrage

Beitragvon mad » Mi 03 Apr, 2002 19:33

<HTML>hi,

also wenn ich das richtig versteh, dann sollen im resultset alle mitarbeiter id's landen,
die datum=now, grund=1 und ende not null haben, sollte aber ein eintrag mit
ende is null und datum=now und grund=1 vorliegen, dann sollen auch die anderen
eintraege dieses mitarbeiters nicht ausgegeben werden .. puuuh ...

jo sowas schreit direkt nach einem sub-select ;-)
aber mit mysql spielts das nicht, da muesstest den subselect mit zwei selects und einem
id not in ([ergebnisse des forhergehenden selects]) realisieren ..

hm .. join .. weiss ich jetzt nicht auswendig ob _das_ funkt ...
aber probieren kannst ja mal ... (deinen table nenn ich mal eben "foo")

select f1.* from foo f1, foo f2
where
f1.ende is not null and
f2.ende is null and
f2.mitarbeiter_ID!=f1.mitarbeiter_ID and
f1.date=now() and
f1.grund_ID=1

aber ob das klappt .. wetten wuerd ich da jez nicht drauf ;-)

hth,
mad.
</HTML>
mad
 


ZurĂĽck zu MySQL

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste