Abfrage unter SQL

Hallöchen,
ich habe einkleines Problem:
Momentan versuche ich mich an einer Datenbank, die eine Bestands und Verleihdatenbank sein soll. Das spezielle Problem ist, ich möchte herausbekommen, welche Geräte verfügbar(d.H. nicht verliehen) sind. Die Abfrage geschieht über zwei Tabellen

mobgwa |Gerätenummer|Gerätebezeichnung| und
Verleih |Gerätenummer|Personalnummer|Verleihdatum|…

Hierzu habe ich folgenden SQL-Code geschrieben:

SELECT Verleih.Gerätenummer, mobgwa.Gerätebezeichnung
FROM mobgwa LEFT OUTER JOIN Verleih ON Verleih.Gerätenummer=mobgwa.Gerätenummer
WHERE Verleih.Verleihdatum Is Null;

Das Ergebnis ist für mich unbefriedigend.
In der Spalte Gerätebezeichnung stehen dann wohl alle verfügbaren Geräte, aber in der Spalte Gerätenummer steht nichts.

Ich hoffe, mir kann bei diesem Problem jemand helfen :smile:

Gruß
Tom

Hierzu habe ich folgenden SQL-Code geschrieben:

SELECT Verleih.Gerätenummer, mobgwa.Gerätebezeichnung
FROM mobgwa LEFT OUTER JOIN Verleih ON
Verleih.Gerätenummer=mobgwa.Gerätenummer
WHERE Verleih.Verleihdatum Is Null;

ich würde es mal nur mit „INNER JOIN“ probieren.
Klingt nämlich wahrscheinlicher…

Alex

Hallo Alex,
danke für den Tip, allerdings steht dann unter Gerätebezeichnung auch nichts mehr.

Gruß
Tom

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Thomas,

ich kann mit deinem Skript zwar nicht viel anfangen (JOIN-Bedingungen werden unter ORACLE anders definiert), aber von der Theorie sieht es doch so aus:

Mit einem OUTER JOIN bekommt man doch Zeilen angezeigt, die der JOIN-Bedingung nicht entsprechen.(das wolltest du ja eigentlich nicht !?)

Mit einem SELF-JOIN kann man eine Tabelle mit sich selbst verknüpfen (das wolltest du aber auch nicht !)

Ich empfehle dir, es mal mit einem EQUIJOIN zu probieren (wie das geht weis ich aber nicht - siehe oben).

Gruß JStefan

PS: Mail mal, ob es geklappt hat!

Hallo,

vielleicht mit nem Subselect?

 SELECT Verleih.Gerätenummer, mobgwa.Gerätebezeichnung
 FROM mobgwa 
 WHERE mobgwa.Gerätenummer 
 IN (SELECT Verleih.Gerätenummer 
 FROM Verleih 
 WHERE Verleih.Verleihdatum IS NULL);


    
    
    Gruss,
    
    Max

Hups, es muss natürlich mobgwa.Gerätenummer im ersten Select heissen:

SELECT mobgwa.Gerätenummer, mobgwa.Gerätebezeichnung
 FROM mobgwa 
 WHERE mobgwa.Gerätenummer 
 IN (SELECT Verleih.Gerätenummer 
 FROM Verleih 
 WHERE Verleih.Verleihdatum IS NULL);

SELECT Verleih.Gerätenummer, mobgwa.Gerätebezeichnung
FROM mobgwa LEFT OUTER JOIN Verleih ON
Verleih.Gerätenummer=mobgwa.Gerätenummer
WHERE Verleih.Verleihdatum Is Null;

mach’s doch einfach so:

SELECT mobgwa.Gerätenummer, mobgwa.Gerätebezeichnung …

Sieht so aus, als gäbe es keine Datensätze die Deinen Kriterien entsprechen. Probier INNER JOIN und laß die Where-Clause weg um zu sehen, ob es Datensätze mit gleicher Gerätenummer in den beiden Tabellen gibt. Wenn das Ergebnis leer ist, liegt das Problem da. Wenn es ein Ergebnis gibt, dann setz’ mal einen Filter auf das Feld Verleihdatum (ich nehme an Du arbeitest mit Access?) und schaue wieviele überbleiben.

Maria

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,
danke für Eure Hilfe. Ich habe den Fehler jetzt gefunden.Der Fehler lag bei"Verleih.Gerätenummer". Dort kann kein Datensatz enthalten sein, da dieser ja in der mobgwa.Gerätenummer steht.

Gruß
Tom

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]