# [MySQL] Leere Tabelle abfragen



## tschinkes (4. Mai 2005)

Hallo,

habe das Problem das ich zwei tabellen habe, die eine beinhaltet Daten, die ich ganz normal abfragen möchte und angezeigt bekomme, die zweite Tabelle enthält Daten die sich ständig ändern, die auch mal leer ist.

Beide Tabellen werden anhand von id Feldern verglichen. Das Problem dabei ist, wenn Tabelle zwei jetzt leer ist, zeigt er mir gar keine Daten der ersten Tabelle an, aber das will ich ja vermeiden, da ich ja eh nur mit der zweiten Tabelle, Daten aus der ersten Tabelle ausschliesen will! Wenn deshalb die zweite leer ist, sollte er mir alle Daten anzeigen, aber das macht er nicht!



```
SELECT *
FROM video AS t1, merke AS t2
WHERE
  t1.leihe <= '0'
AND
  t1.id <> t2.video_id
AND
  t2.user_id <> 'userid'
```

'userid' ist eine definierte Variable, die die Session ID ausgibt! (Also hat nichts mit dem fehler zu tun,  ja auch!)


----------



## waterhouse533-lp (4. Mai 2005)

hi tschinkes,

 lies in der hilfe deines dbms nach, wie joins(in deinem fall "left outer join") implementiert sind. die loesen dein problem.


----------



## tschinkes (4. Mai 2005)

Habe jetzt folgendes:


```
SELECT t1.id, t1.videonummer, t1.titel, t1.text, t2.user_id, t2.video_id
FROM video t1 LEFT JOIN merke t2 ON t2.user_id <> 'userid' AND t1.id != t2.video_id
WHERE t1.leihe <= '0'
ORDER BY t1.id
```

Aber es funktioniert nicht wie ich es will!
Es sollen alle Datensätze aussortiert werden (user id und video id), die in der zweiten tabelle per id eingetragen sind. Und wenn die zweite Tabelle leer ist, sollen alle Daten der ersten tabelle angezeigt werden. User id wird per session variable ermittelt! Bin echt am verzweifeln :-(


----------



## waterhouse533-lp (4. Mai 2005)

hi tschinkes,
 ich habe leider deine tabellenstruktur nicht ganz verstanden, deswegen vermute ich mal einiges.
 1. tabelle t1 enthaelt nur daten von video, wobei t1.id  der primaerschluessel ist und
     t1.videonummer eine zusatzkodierung darstellt(z.b. 0399  => thriller)
 2. du hast eine user-tabelle (name,anschrift, etc) und benutzt die tabelle t2 um die       n:m beziehung zwischen den videos und den usern aufzuloesen
 3. der primaerschluessel von t2 besteht aus t2.user_id und t2.video_id

 unter diesen voraussetzungen besteht die einzige verknuepfung zwischen t1 und t2 aus der video_id. d.h. liebe db, gib mir alle datensaetze die in t1 vorhanden und nicht in t2 sind.
 SELECT t1.id, t1.videonummer, t1.titel, t1.text
FROM video t1 LEFT JOIN merke t2 ON t1.id = t2.video_id
WHERE t2.user_id is null
ORDER BY t1.id


----------



## tschinkes (4. Mai 2005)

Ja genau so meinte ich es, *g hab den fehler auch schon alleine gefunden, danke trotzdem!

Der fehler war 'WHERE t2.user_id IS NULL'


----------

