Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Verknüpfung zweier Tabellen verbieten (https://www.delphipraxis.net/83407-verknuepfung-zweier-tabellen-verbieten.html)

faux 2. Jan 2007 10:57

Datenbank: MySQL • Version: 5.0 • Zugriff über: PHP

Verknüpfung zweier Tabellen verbieten
 
Hallo!

Mit einem INNER JOIN kann man Tabellen zwangsweise verknüpfen und mit einem OUTER JOIN optional verknüpfen. Aber gibt es auch ohne Subquery eine Möglichkeit, dass eine Verknüpfung verboten ist?

Problemstellung:

Ich habe eine Tabelle mit Schulklassen und eine mit Einträgen der Klassen.
Code:
+-----------+     +-------------------+
| classes  |     | entries          |
+----+------+     +----+-------+------+
| ID | Abbr |     | ID | Class | Data |
+----+------+     +----+-------+------+
| 1  | 1A  |     | 1  | 1     | 34.5 |
| 2  | 1B  |     | 2  | 4     | 23.1 |
| 3  | 2A  |     | 3  | 5     |  1.8 |
| 4  | 3A  |     +----+-------+------+
| 5  | 3B  |
| 6  | 3C  |
+----+------+
Ich will ein Query schreiben, das mir alle Klassen liefert, die noch keinen Eintrag haben.
Ich habe schon folgendes Probiert:
SQL-Code:
SELECT Abbr
FROM classes c
LEFT OUTER JOIN entries e ON c.ID = e.Class
/* Liefere alle, die KEINEN entry haben */
WHERE e.ID = NULL
Funktioniert aber leider nicht.
Naja, mit eine, Subquery wär's leicht, will ich aber aus Gründen der Abwärtskompatibilität zu MySQL 4 vermeiden.

Grüße
Faux

Touchdown 2. Jan 2007 11:44

Re: Verknüpfung zweier Tabellen verbieten
 
In diesen Fällen könnte NULL auch falsch sein, probiers mal mit

SQL-Code:
SELECT Abbr
FROM classes c
LEFT OUTER JOIN entries e ON c.ID = e.Class
/* Liefere alle, die KEINEN entry haben */ 
WHERE e.ID = NULL or e.ID = 0
Da sollte dann schon was bei raus kommen.

jbg 2. Jan 2007 12:20

Re: Verknüpfung zweier Tabellen verbieten
 
Müsste das "WHERE e.ID = NULL" nicht "WHERE e.iD IS NULL" lauten?

faux 2. Jan 2007 12:33

Re: Verknüpfung zweier Tabellen verbieten
 
Zitat:

Zitat von jbg
Müsste das "WHERE e.ID = NULL" nicht "WHERE e.iD IS NULL" lauten?

Ja, müsste es. ;)
Jetzt funktioniert es. Danke sehr. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz