Ankündigung

Einklappen
Keine Ankündigung bisher.

MySql 2 Tabellen zusammenführen

Einklappen

Neue Werbung 2019

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

  • MySql 2 Tabellen zusammenführen

    Hallo Forum,

    ich habe 2 Tabellen die ich gerne zusammenführen möchte.

    die Erste Tabelle enthält ALLE Modelle einer Marke
    die zweite Tabelle enthält nur die vorhandenen Modelle

    Nun möchte ich, das ich beide Tabelle so verknüpfe das beides vermischt ist.

    Soll heissen er soll wenn in der Tabelle 2 das Modell nicht vorhanden ist, einen NULL Wert reinschreiben.

    Im Prinzip soll er ALLE Modell aus Tablle 1 mit Tablle 2 vergleichen und mir bei den Modellen die zwar in tabelle 1 aber NICHT in Tabelle 2 vorhanden sind mit NULL aufführen.

    Das müsste ja mit einem outer Join gehen oder? Leider muss ich das in Tabelle 2 eingrenzen auf bestimmte kundennummern. Dann gehts wieder nicht mehr.

    Mein jetziger SQL sieht so aus:

    SELECT
    h.kurz,
    p.baureihe,
    p.kundenwebid
    FROM
    mb_klasse h
    LEFT JOIN
    fahrzeugdaten p ON (h.kurz = p.baureihe)
    UNION
    SELECT
    h.kurz,
    p.baureihe,
    p.kundenwebid
    FROM
    mb_klasse h
    RIGHT JOIN
    fahrzeugdaten p ON (h.kurz = p.baureihe);


    nun möchte ich dies aber bergenzen auf bestimmte Kundennummern

    Z.B (where p.kundenwebid='1234 or p.kundenwebid='123456')

    Wo kommt die Where Anweisung hin? Habe es schon mehrere Stellen ausprobiert aber dann mischt er alle Kundennummern zusammen.

    Oder komme ich hier mit dem out Join nicht weiter?

    Viele Grüße

    Cop68

  • #2
    Wozu überhaupt 2 SELECTS? Der erste reicht doch?

    Kommentar


    • #3
      Wenn ich das richtig sehe, sind deine bisherigen beiden SELECTs, die du per UNION verbindest, identisch - bis darauf, dass du ein und die selbe Tabelle einmal per LEFT- und einmal per RIGHT JOIN dazu bindest, noch dazu mit dem jeweils selben ON-Kriterium.

      Ich kann mir absolut nicht vorstellen, wozu man sowas brauchen sollte - erklärst du das bitte erst mal nachvollziehbar?
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        2 Tabellen

        Hallo,

        danke für eure Antworten.

        Ich habe eine Tablle wo ALLE Modelle drin sind dies es gibt.

        Dann gibt es eine Tabelle mit Modellen die echt vorhanden sind.

        Nun möchte ich einen Abgleich der beiden Tabellen wobei die nicht vorhandenen mit NULL ausgeben werden.

        Beispiel

        Tabelle mit ALLEN
        1er
        3er
        5er
        7er
        8er

        Tabelle mit vorhandenen

        5er 520i weitere daten
        5er 530 dito

        7er 720 dito
        7er 730 dito


        So soll das aussehen:

        1er NULL
        3er NULL
        5er 520i eben die Einträge
        5er 530
        7er 720 dito
        7er 730
        8er NULL

        Im Prinzip sollen die NICHT vorhandenen zu Tabelle 2 hinzugefügt werden.

        Ich hoffe das ich verständlich machen konnte.


        Viele Grüße

        Cop68

        Kommentar


        • #5
          Zitat von cop68 Beitrag anzeigen
          Ich habe eine Tablle wo ALLE Modelle drin sind dies es gibt.

          Dann gibt es eine Tabelle mit Modellen die echt vorhanden sind.
          Dann liegt der Fehler also schon im Datenmodell.

          Wie ich heute schon an anderer Stelle schrieb, lautet die Faustregel, Daten gleicher Struktur gehören in die gleiche Tabelle.

          Ob das Model nun „echt vorhanden“ ist, was auch immer das bedeuten soll - das lässt sich über ein Kennzeichen in einer zusätzlichen Spalte abbilden.

          Im Prinzip sollen die NICHT vorhandenen zu Tabelle 2 hinzugefügt werden.
          Redest du jetzt von einer Einmal-Aktion, um den Fehler im Datenmodell zu beseitigen - oder davon, wie du dich bei jedem Auslesen der Daten darum herum mogeln möchtest?

          Nur ersteres wäre eigentlich sinnvoll.
          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

          Kommentar


          • #6
            @ChrisB: Bei einer Beziehung zwischen Modellen und Fahrzeugen ist so eine Struktur aber durchaus gerechtfertigt, ein tatsächlich vorhandendes Fahrzeug hätte zum Beispiel einen Kilometerstand, was das Modell an sich nicht hat.

            Kommentar


            • #7
              Zitat von cycap Beitrag anzeigen
              Bei einer Beziehung zwischen Modellen und Fahrzeugen
              Dass es eine solche sein soll(?), konnte ich aus „echt vorhanden Modellen“ nicht herauslesen.

              ist so eine Struktur aber durchaus gerechtfertigt, ein tatsächlich vorhandendes Fahrzeug hätte zum Beispiel einen Kilometerstand, was das Modell an sich nicht hat.
              Trotzdem sind gewisse Grundeigenschaften für alle Modelle eines Fahrzeugs gleich - die redundant an jedem Fahrzeug wieder abzulegen, kann's auch nicht sein.

              Dann gehört wohl eher die Modell-Beschreibung in eine eigene Tabelle ausgelagert - und am Fahrzeug ein Kennzeichen hinterlegt, um was für ein Modell es sich handelt.


              (Das alles unter theoretischen Annahmen, was die Daten tatsächlich darstellen sollen - die Angaben des Fragers dazu sind ja immer noch spärlich.)
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar


              • #8
                2 Tabllen

                Hallo,

                Es soll ein Menü gebaut werden.

                Mit echten Daten meine ich die Daten die in der DB vorhanden sind.

                Mit Modell Tabelle meine ich, diese Modelle gibt es.

                Ein Händler hat ja nicht immer ALLE Modelle oder?

                Ich möchte nur das ALLE und Vorhandene zusammengeführt werden um daraus ein Menü zu bauen. Die mit NULL erhalten dann einen anderen Link.

                Viele Grüße

                Cop68

                Kommentar


                • #9
                  Zitat von cop68 Beitrag anzeigen
                  Mit echten Daten meine ich die Daten die in der DB vorhanden sind.

                  Mit Modell Tabelle meine ich, diese Modelle gibt es.

                  Ein Händler hat ja nicht immer ALLE Modelle oder?
                  Nein - aber wenn das einzige Kriterium dafür, ob ein Datensatz nun in der einen oder anderen Tabelle steht, das ist, ob der Händler das Modell „hat“ - dann bleibt es dabei, die gehören in eine Tabelle, und „hat“ oder „hat nicht“ in einer zusätzlichen Spalte abgelegt.
                  [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                  Kommentar


                  • #10
                    Zitat von ChrisB Beitrag anzeigen
                    Nein - aber wenn das einzige Kriterium dafür, ob ein Datensatz nun in der einen oder anderen Tabelle steht, das ist, ob der Händler das Modell „hat“ - dann bleibt es dabei, die gehören in eine Tabelle, und „hat“ oder „hat nicht“ in einer zusätzlichen Spalte abgelegt.
                    Ich glaube auch, dass du falsch liegst bzw. ein anderes Bild vor Augen hast.

                    Tabelle1 ist eine Auflistung aller Fahrzeugtypen, also Hersteller(Id) + Modell (BMW, 1er)
                    Tabelle2 ist eine Zuordnung von Händlern(wer kann liefern) zum Fahrzeugmodell, also soetwas wie Id, HändlerId, FahrzeugId, ...

                    Das Datenmodell finde ich völlig ok. Allerdings weiß ich nicht so richtig, wo das Problem mit dem LEFT JOIN ist?
                    Ich denke mal, dass mit WHERE HändlerID = XYZ nicht alle Daten aus Tabelle1 angezeigt werden - aber das könnte man auch in die Bedingung fürs JOIN packen.

                    Kommentar

                    Lädt...
                    X