1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Frage zu Nullwerten

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von MarkO, 27 November 2011.

  1. MarkO

    MarkO Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    Das ist korrekt, es gibt aber mehrere Wege das zu umgehen.
    Code:
    isnull(cast(nummer AS VARCHAR(20)),'Wert nicht vorhanden')
     
  3. MarkO

    MarkO Benutzer

    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
     
  4. MarkO

    MarkO Benutzer

    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!
     
  5. ukulele

    ukulele Datenbank-Guru

    Ob du mit Bordmitteln an die Transaktionslogs kommst weiss ich nicht aber vieleicht hilft dir das Tool SQL Profiler weiter.
     
  6. MarkO

    MarkO Benutzer

    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
     
  7. ukulele

    ukulele Datenbank-Guru

    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.
     
  8. MarkO

    MarkO Benutzer

    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
     
  9. ukulele

    ukulele Datenbank-Guru

    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?
     
  10. ukulele

    ukulele Datenbank-Guru

    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
     
  11. Ritschi

    Ritschi Aktiver Benutzer

    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.
     

Diese Seite empfehlen