kleinerkönig: Unterschied zwischen Mysql und Mssql

Hallo,
ich habe eine SQL Abfrage in MSSQL wo ich zwei Tabellenspalten zu einem Alias zusammenfüge (tblKontakte.Nachname + ' ' + tblKontakte.Vorname AS uebergeben_an) in MYSQL funktioniert das so leider nicht. Wie funktioniert das unter Mysql??

Gruss
kleinerkönig

  1. Ich grüsse den Cosmos,

    Wie funktioniert das unter Mysql??

    Ich würde sagen, du solltest dir mal die Doku zu JOIN reinziehen. Da du nicht sagst, welche MySQL-Version du verwendest, ist es schwer, eine genaue Auskunft zu geben.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    1. Hallo,

      die MYSQL Version die ich nutze ist 5.0.24

      Gruss
      kleinerkönig

      1. Habe mal gerade join überflogen, da wird immer von gesprochen zwei Tabellen zusammenzufügen. Ich möchte aber nur 2 Spalten zu einer bekommen.

        Gruss
        kleinerkönig

        1. Hi,

          der reguläre Concat-Operator ist IIRC ||, also zwei Senkrechtstriche. Ansonsten könnte es sein, dass es eine explizite Concat-Funktion gibt.

          MfG
          Rouven

          --
          -------------------
          He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
          1. echo $begrüßung;

            der reguläre Concat-Operator ist IIRC ||, also zwei Senkrechtstriche. Ansonsten könnte es sein, dass es eine explizite Concat-Funktion gibt.

            || ist unter MySQL ein logisches Oder (ebenso wie OR): Logical Operators
            Um Strings miteinander zu verbinden nimmt man die Funktionen CONCAT() oder CONCAT_WS(). String Functions

            echo "$verabschiedung $name";

            1. Hi,

              || ist unter MySQL ein logisches Oder (ebenso wie OR): Logical Operators

              genau, ich finde es interessant und wichtig darauf hinzuweisen, dass MySQL hiermit vom SQL-Standard abweicht (MySQL vs. ANSI

              MfG
              Rouven

              --
              -------------------
              Ambition is the last refuge of failure.  --  Oscar Wilde (Irish Poet, Novelist, Dramatist and Critic, 1854-1900)
            2. Hallo und Guten Morgen,

              also ich raff es nicht.

              Um Strings miteinander zu verbinden nimmt man die Funktionen CONCAT() oder CONCAT_WS(). String Functions

              Ich habe jetzt in MSSQL eine Abfrage (vereinfacht):
              select Nachname + ' ' + Vorname AS Name from tblkontakte
              Damit bekomme ich als Ergebnis eine Spalte Name mit allen Namen in der Reihenfolge "Meyer Manfred".
              Wenn ich dass aber mit SELECT CONCAT_WS(',','Nachname','Vorname') from tblkontakte; in MYSQL ein Abfrage mache, bekomme ich zwar eine Spalte, aber mit genau dem Text aus der Abfrage, also: "Nachname,Vorname" und nicht Meyer,Manfred.

              Gruss
              kleinerkönig

              1. Hallo kleinerkönig,

                Ich habe jetzt in MSSQL eine Abfrage (vereinfacht):
                select Nachname + ' ' + Vorname AS Name from tblkontakte
                Damit bekomme ich als Ergebnis eine Spalte Name mit allen Namen in der Reihenfolge "Meyer Manfred".
                Wenn ich dass aber mit SELECT CONCAT_WS(',','Nachname','Vorname') from tblkontakte; in MYSQL ein Abfrage mache, bekomme ich zwar eine Spalte, aber mit genau dem Text aus der Abfrage, also: "Nachname,Vorname" und nicht Meyer,Manfred.

                Kein Wunder. Du verbindest ja auch Strings und keine Tabellenspalten. Da sind genau vier ' zuviel.
                Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte

                Grüße
                Andreas

                --
                As Einstein once said during a Thanksgiving food fight, "It's all relatives."
                1. echo $begrüßung;

                  Du verbindest ja auch Strings und keine Tabellenspalten. Da sind genau vier ' zuviel.

                  Richtig. Wenn Spaltennamen mit reservierten Bezeichnern kollidieren, sind die Spaltennamen in Backticks einzuschließen. 'Einfache' und "doppelte" Anführungszeichen kennzeichnen Strings.

                  Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte

                  Nein, kann er nicht. Das heißt, kann er schon, aber das ergibt nicht das gewünschte Ergebnis. Das + ist in MySQL kein Stringverkettungsoperator. MySQL versucht die angegebenen Spalteninhalte in numerische Werte umzuwandeln und dann zu addieren.

                  echo "$verabschiedung $name";

                  1. Hallo dedlfix,

                    Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte

                    Nein, kann er nicht. Das heißt, kann er schon, aber das ergibt nicht das gewünschte Ergebnis. Das + ist in MySQL kein Stringverkettungsoperator. MySQL versucht die angegebenen Spalteninhalte in numerische Werte umzuwandeln und dann zu addieren.

                    Du hast Recht. Danke für die Korrektur.

                    Grüße
                    Andreas

                    --
                    Oh my God! What did you do to the cat? It looks half-dead!
                    (Schroedinger's Wife)
                2. Hallo Andreas,
                  danke.

                  Kein Wunder. Du verbindest ja auch Strings und keine Tabellenspalten. Da sind genau vier ' zuviel.

                  Wenn ich die ' wegnehme dann klappt es, und wenn ich dann noch AS dahinter hänge habe ich auch den Spaltennamen.

                  SELECT CONCAT_WS( ' ', Nachname, Vorname ) AS Name
                  FROM tblkontakte;

                  Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte

                  Das klappt so aber nur unter MSSQL aber nicht unter MYSQL. Das war ja mein Problem.

                  Gruss
                  kleinerkönig