Frage zu Nullwerten

MarkO

Benutzer
Beiträge
17
Hallo zusammen,

ich habe eine Frage zum SQL Befehl ISNULL()

Mein Befehl lautet wie folgt ISNULL(nummr, 'KEIN WERT VORHANDEN')

nummer ist vom Typ int.

Leider ist es nicht möglich, einen Int wert durch einen STring zu ersetzten. Hat hier jeman einen Ahnung wie das trotzdem geht?? Ich kann nummer ohne Probleme durch die Zahl 0 ersetzen, aber nicht durch einen String.

Danke!

Viele Grüße
 
Werbung:

MarkO

Benutzer
Beiträge
17
Hallo!

vielen Dank!

Ich hab gleich noch zwei andere Fragen:

wie kann man denn auf dem SQL - Server 2005 das Transaktionsprotokoll einer Datenbank anschauen? Also ich meine die einzelnen Einträge?

Und die zweite Frage:

Code:
SELECT name
FROM Angestellter INNER JOIN
      Abteilung ON Angestellter.nr = Abteilung.nr
WHERE (Abteilung.budget =
      (SELECT  MIN(budget) AS Expr1
        FROM Abteilung AS Abteilung_1))

Kann ich diesen Subselect befehl auch in einen "normalen" Select umwandeln? FAlls ja, wie geht das?

Danke!

Viele Grüße
 

MarkO

Benutzer
Beiträge
17
Ich hab mal rumprobiert,

aber das klappt leider nicht so:

Code:
SELECT    Angestellter.name, Abteilung.budget
FROM        Angestellter INNER JOIN
                    Abteilung ON Angestellter.nr = Abteilung.nr
GROUP BY Abteilung.budget, Angestellter.name
HAVING      (Abteilung.budget = MIN(Abteilung.budget))

Bitte um Hilfe wie das auch ohne Subselect geht, oder klappt das gar nicht??

Wenn ich anstatt MIN(Abteilung.budget) Einfach die kleinste Zahl (hier: 5) eingebe, dann klappt das... ABer mit Min funktionierts nicht, ich glaub hier wird je Datensatz das kleinste rausgesucht und nicht in der gesamten Tabelle gesucht?

Danke!

Danke!
 

MarkO

Benutzer
Beiträge
17
Hallo!
Danke, mich hat's nur interessiert, ob man hier einfach zugriff drauf hat. ICh werde mir das Tool mal anschauen.

Hast du denn noch eine Idee wegen dem Subselect?

Danke!

Viele Grüße
 

ukulele

Datenbank-Guru
Beiträge
4.579
Mir fällt es etwas schwer deine Datenstruktur zu verstehen, Angestellter.nr = Abteilung.nr stört mich z.B. Die Nummer der Abteilung muss doch nicht gleich der Nummer des Angestellten sein oder irre ich? Vieleicht hab ich auch heute Brett vorm Kopf. Vieleicht meinst du aber auch etwas in der Richtung:
Code:
SELECT    Angestellter.name,
        Abteilung.budget
FROM    Angestellter,
        Abteilung
WHERE    Angestellter.Abteilung_nr = Abteilung.nr
GROUP BY Abteilung.budget,Angestellter.name
HAVING    Abteilung.budget = min(Abteilung.budget)
Ich arbeite nicht so gerne mit JOIN, finde mich so besser zurecht.
 

MarkO

Benutzer
Beiträge
17
HAllo!

Danke für deine Antwort!!

Code:
FROM    Angestellter,
        Abteilung
WHERE    Angestellter.Abteilung_nr = Abteilung.nr

Ist genau das gleich wie der Inner join. Mein zweiter Quellcode ohne Subselect funktiont wenn ich min(Abteilung.budget) durch die niegrigste Zahl ersetze, die bei Budget vorkommt. Dann werden auch die gleichen Datensätze wie bei Subselect ausgegeben. Aber das mit min funktioniert nicht. Hast du noch eine Idee?

Danke!

Viele Grüße
 

ukulele

Datenbank-Guru
Beiträge
4.579
Angestellter.Abteilung_nr != Angestellter.nr , darauf wollte ich eigentlich hinaus.

Willst du denn den minimalen Wert aus der gesammten Tabelle oder den minimalen Wert aller Datensätze des jeweiligen Angestellten?
 

ukulele

Datenbank-Guru
Beiträge
4.579
Code:
SELECT    an.name AS Name,
        ab1.budget AS Summe,
        min(ab2.budget) AS Minimum
FROM    Angestellter an,
        Abteilung ab1,
        Abteilung ab2
WHERE    an.Abteilung_nr = ab1.nr
AND        an.Abteilung_nr = ab2.nr
GROUP BY ab1.budget,an.name
 
Werbung:

Ritschi

Aktiver Benutzer
Beiträge
41
Hi,
Was kommt den raus wenn Du den Subselect alleine ausführst?
Wenn es Abteilungen gibt, für die Kein Budget vermerkt ist und "Null" zurückkommt musst das mit INULL(Abteilung.budget, '0') verhindern.
 
Oben