phpbar.de logo

Mailinglisten-Archive

Re: Datenintegritaet bewahren .. aber wie ?
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Datenintegritaet bewahren .. aber wie ?



ist es denn sinnvoll, eine Bedingung auf einer Spalte einer optionalen
Tabelle zu setzen?
Bsp:
Tabelle1
- ID
- SpalteTab1

Tabelle2
- ID
- Tab1ID
- SpalteTab2

hole alle aus Tabelle1 und nur passende aus Tabelle2:
SELECT SpalteTab1, SpalteTab2
FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.Tab1ID
WHERE SpalteTab2 = 'irgendwas';

jetzt kommen alle Eintr�ge aus Tabelle 1 und wenn es gleiche IDs in Tabelle2
gibt, die der Bedingung gen�gen, kommen die auch.
Falls die Bedingung SpalteTab2 aber nicht erf�llt ist, kommt nur die Zeile
aus Tabelle1 und es sieht so aus, da� es keinen Eintrag in Tabelle2 gibt.

Also:
SELECT SpalteTab1, SpalteTab2
FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.Tab1ID
WHERE Tabelle2.Tab1ID IS NULL;
w�rde alle Zeilen aus Tabelle1 lesen und nie etwas aus Tabelle2 bringen.


Das Problem von Andreas K�ster l��t sich nur mit Subselect
and ID not in (select ID from ...) l�sen oder da es keine Subselect in mySQL
gibt mit temp Tables.

Oder liege ich ganz falsch Martin?

Gru�
Stefan


-----Original Message-----
From: Martin Ramsch <m.ramsch_(at)_computer.org>
To: Deutsche MySQL-Mailingliste <mysql-de_(at)_lists.4t2.com>
Date: Monday, September 27, 1999 9:57 PM
Subject: Re: Datenintegritaet bewahren .. aber wie ?



Das geht sch�n mit einem LEFT JOIN und dem Test auf NULL-Werte:

  SELECT tab2.id
  FROM   tab2 LEFT JOIN tab1 USING (id)
  WHERE  tab1.id IS NULL;

Wenn es zu einer id aus tab2 keine id in tab1 gibt, dann erzeugt der
LEFT JOIN f�r tab1 NULL-Werte - und danach kann man testen.

Ciao,
  Martin


---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive