Ankündigung

Einklappen
Keine Ankündigung bisher.

[GELÖST] JOIN liefert nicht das erwartete Ergebnis

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [GELÖST] JOIN liefert nicht das erwartete Ergebnis

    Hallo,

    Ich stehe gerade wieder kurz auf Kriegsfuß mit den JOINs.


    Simplifiziert möchte ich ausgehend von 2 Tabellen ( Sprachen, Produkte ) eine Übersicht aller Bezeichnungen eines Produkt haben.
    Existiert bisher kein Eintrag für die Sprache am Produkt, soll dennoch die Sprache mit Produktbezeichung NULL angezeigt werden.

    Ein Beispiel:
    Sprachen hat die Spalten: Sprache, Bezeichnung ( in Sprache steht der ISO-Code )
    Produkte hat die Spalten: Artikelnummer, Sprache, Bezeichnung ( Sprache ist hier wieder der ISO-Code )

    In der Tabelle Produkte sind nur die gepflegten Sprachen enthalten. Wenn bspw. für IT bisher nichts angelegt wurde, gibt es dazu auch keinen Eintrag in Produkte.

    Ich möchte jetzt eigentlich nur, wenn ich mir eine Artikelnummer ansehe alle Sprachen aus der Tabelle Sprachen mit dem entsprechenden Titel aus der Tabelle Produkte anzeigen lassen.
    Ist ein Produkt in einer Sprache nicht gepflegt, bspw. wie erwähnt für IT, dann soll an der Stelle die Produktbezeichnung mit NULL ausgewertet werden.

    Letzter Stand meiner Query sieht schematisch so aus:
    Code:
    select
        Sprache = s.Bezeichnung,
        Bezeichnung = p.Bezeichnung
    
    from
        Sprachen s
    
    left join
        Produkte p
        on p.Sprache = s.Sprache
    
    where
        p.Artikelnummer = 'foobar'
    Verschieden JOIN-Typen habe ich ausprobiert, was merkwürdiger Weise rein gar nichts an dem Ergebnis geändert hat?! ( Hätte vermutet, dass ein JOIN oder FULL OUTER JOIN eine andere Ergebnismenge liefert )
    Es werden mir aber nur die Sprachen/Bezeichnungen angezeigt, die in Produkte gepflegt sind.

    Bräuchte mal jemanden, der mich auf meinen Gedankenfehler hinweist und in die richtige Richtung wirft.

    DBMS ist MSSQL Server!

    Danke
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

  • #2
    Zitat von Arne Drews Beitrag anzeigen
    Code:
    select
    Sprache = s.Bezeichnung,
    Bezeichnung = p.Bezeichnung
    Ist das überhaupt korrekte SQL Syntax? Z.B. in MySQL wäre das ein Vergleich, der immer TRUE ergibt.

    Kommentar


    • #3
      In T-SQL ist das gültig
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Dann übergebe ich mal an den MSSQL-Experten.

        Kommentar


        • #5
          Zitat von Dormilich Beitrag anzeigen
          Dann übergebe ich mal an den MSSQL-Experten.
          Das' nett von Dir, sachst ihm Bescheid?

          Also ich könnte mir vorstellen, dass das nicht spezifiziert mit MSSQL oder sonst einem DBMS zu tun hat. Ich hatte das nur erwähnt, weil es unterschiedliche JOIN Bezeichnungen zwischen den DBMS gibt.
          Ich vermute das Problem eher in meiner Verwendung der JOINs, also allgemein.

          Gruß Arne
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Mit der Where-Klausel wirfst du das null-Ergebnis aus der Ergebnismenge sobald es das Produkt noch nicht gibt.

            Hast du versucht p.Artikelnummer = 'foobar' an die Join-Klausel zu hängen? Dann sollte der linke Part ja, mit allen Sprachen, stehen bleiben und der rechte Part null-Spalten liefern.
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Klar, ich wusste, dass ich da falsch denke.
              Natürlich hast Du recht, danke Dir!

              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar

              Lädt...
              X