Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mysql tabellen kombinieren

Einklappen

Neue Werbung 2019

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

  • [Erledigt] mysql tabellen kombinieren

    ich habe folgende sql tabellen :


    CREATE TABLE partner (
    pid int Primary key not Null,
    pidbez VARCHAR(50));

    CREATE TABLE vertrag(
    vid int Primary key not Null,
    pid int,
    kid int,
    vidbez VARCHAR(50));


    CREATE TABLE kunde(
    kid int Primary key not Null,
    pid int,
    kidbez VARCHAR(50));

    CREATE TABLE rzuser (
    rzuid int Primary key not Null,
    vid int,
    rzbez VARCHAR(50));

    Insert into Partner values(1,'part1');
    Insert into Partner values(2,'part2');
    Insert into Partner values(3,'part3');

    Insert into Kunde Values (10,1,'kun10');
    Insert into Kunde Values (20,2,'kun20');
    Insert into Kunde Values (30,1,'kun30');
    Insert into Kunde Values (40,3,'kun40');

    Insert into Vertrag Values (100,1,10,'vert100');
    Insert into Vertrag Values (200,2,20,'vert200');
    Insert into Vertrag Values (300,1,30,'vert300');

    Insert into rzuser Values (1000,100,'rz1');
    Insert into rzuser Values (2000,100,'rz2');
    Insert into rzuser Values (3000,100,'rz3');
    Insert into rzuser Values (4000,200,'rz4');
    Insert into rzuser Values (5000,200,'rz5');
    Insert into rzuser Values (6000,300,'rz6');
    Insert into rzuser Values (7000,300,'rz7');


    ich bekomme es nicht vernünftig hin, eine Abfrage zu basteln, die mir alle rzuser zu allen kunden eines bestimmten partners herausgibt. Der Rzuser ist nur über den Vertrag dem kunden zugeordnet.

    könnte mir jemand einen Hinweis geben ?

  • #2
    JOIN http://www.php.de/php-einsteiger/489...rundlagen.html
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Ich geb dir auch den Tipp sinnvollere Namen für die Spalten zu wählen. Falls diese zu lang sind kannst du bei Abfragen ja immer noch einen Alias erstellen.

      Kommentar


      • #4
        da hst du völlig Recht. in der ecten Datenbank sin die namen ausführlich, nur hier für die darstellung des Problems kurz und knapp.

        ist die folgende Lösung vernünftig oder zu afwändig !

        SELECT rzuser.*,vertrag.*,kunde.kidbez, partner.pidbez
        FROM vertrag
        LEFT JOIN kunde ON kunde.pid = 1
        LEFT JOIN rzuser ON rzuser.vid= vertrag.vid
        LEFT JOIN partner ON partner.pid = vertrag.pid
        WHERE
        vertrag.kid = kunde.kid
        ;

        Kommentar


        • #5
          Im "ON"-Teil beschreibst du normalerweise das Verhältnis der beiden Tabellen, du solltest also das erste ON mit dem WHERE vertauschen. Ansonsten nochmal die Info, dass * BÖSE ist.
          [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

          Kommentar


          • #6
            wie soll das aussehen ???

            Kommentar


            • #7
              ok, so ? :

              SELECT rzuser.*, vertrag.*, kunde.*, partner.pidbez
              FROM vertrag, kunde, partner, rzuser
              WHERE kunde.pid = 1
              AND vertrag.kid = kunde.kid
              AND rzuser.vid = vertrag.vid
              AND partner.pid = vertrag.pid
              ;

              danke für die Hinweise !

              Kommentar

              Lädt...
              X