UNION ALL Abfrage

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Steamy2010.

    UNION ALL Abfrage

    Guten Morgen @ all !! :)

    Ich habe eine Tabelle mit Namen und eine mit Sonderzeichen. In einigen Vornamen sind Sonderzeichen enthalten.

    Mit folgender Abfrage zähle ich wieviele Sonderzeichen in der Tabelle Namen vorkommen und lass mir das Ergebnis in

    einer Tabelle auflisten. Allerdings bekomme ich mit meiner Abfrage bisher nur die Zeichen aufgelistet mit der entsprechenden Anzahl, die auch

    tatsächlich vorhanden sind. Ich möchte aber, dass alle Sonderzeichen aufgelistet werden auch wenn sie nicht vorkommen also z.B [ = 0

    Nun bin ich auf den Befehl UNION ALL gestossen, schaffe es aber nicht meine bisherige Abfrage so zu gestalten, dass ich halt zum gewünschten Ergebnis komme.

    Könnt ihr mir da vielleicht weiterhelfen? ;(

    SQL-Abfrage

    1. SELECT COUNT(*) AS Anzahl,ZEICHEN FROM SONDERZEICHEN AS S CROSS JOIN test_vorname AS A WHERE A.VORNAME LIKE '%[' + Zeichen + ']%' GROUP BY
    2. ZEICHEN

    Hier lass ich mir anzeigen wieviele Sonderzeichen in der unteren Tabelle vorkommen
    Bilder
    • 06.08._2.jpg

      25,25 kB, 119×556, 146 mal angesehen
    Schlimmer als ein Elefant im Porzellanladen, ist ein Igel in der Kondomfabrik und Nutella hat Lichtschutzfaktor 9,7 8)
    Wenn ich die Abfrage so stelle:

    SQL-Abfrage

    1. SELECT COUNT(*) AS Anzahl,ZEICHEN FROM SONDERZEICHEN AS S CROSS JOIN test_vorname AS A WHERE A.vorname LIKE '%[' + Zeichen + ']%' GROUP BY ZEICHEN UNION ALL SELECT Zeichen, 0 as ANZ from SONDERZEICHEN


    bekomme ich die Fehlermeldung:

    Meldung 245, Ebene 16, Status 1, Zeile 1

    Fehler beim Konvertieren des varchar-Wertes '!' in den int-Datentyp.

    Also konvertiere ich so:

    SQL-Abfrage

    1. SELECT COUNT(*) AS Anzahl,CAST(ASCII('SONDERZEICHEN.ZEICHEN') AS int) FROM SONDERZEICHEN CROSS JOIN test_vorname WHERE test_vorname.vorname LIKE '%[' + Zeichen + ']%' GROUP BY SONDERZEICHEN.ZEICHEN UNION SELECT CAST(ASCII('SONDERZEICHEN.ZEICHEN') AS int),0 FROM SONDERZEICHEN CROSS JOIN test_vorname WHERE test_vorname.vorname NOT LIKE '%[' + Zeichen + ']%'



    Und nun ist das das Ergebnis, was ja aber auch nicht richtig ist.

    ich möchte doch das links die Anzahl der rechts Vorkommenden Sonderzeichen aufgelistet wird. Allerdings sollen die restlichen Sonderzeichen auch aufgelistet werden mit der Anzahl 0 halt. "Es gibt sie , aber sie kommen nicht vor..."

    Kann man mir sagen, ob ich hiermit überhaupt auf dem richtigen Weg bin ?(
    Schlimmer als ein Elefant im Porzellanladen, ist ein Igel in der Kondomfabrik und Nutella hat Lichtschutzfaktor 9,7 8)
    @petaod, danke für den Hinweis, war auch zugleich die Lösung. :thumbsup:

    Für alle die es interessiert:

    SQL-Abfrage

    1. SELECT ZEICHEN,COUNT(vorname) AS Vorname FROM SONDERZEICHEN AS S LEFT JOIN test_vorname AS A ON A.vorname LIKE '%[' + Zeichen + ']%' GROUP BY ZEICHEN
    Schlimmer als ein Elefant im Porzellanladen, ist ein Igel in der Kondomfabrik und Nutella hat Lichtschutzfaktor 9,7 8)