Mehrfachausgabe eines Feldes anderer Kategorie

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

  • Mehrfachausgabe eines Feldes anderer Kategorie

    Hallo,

    ich habe vier tabellen die ich für eine abfrage benutzen möchte.

    Als Ergebnis sollte folgendes rauskommen:

    Code:
    Mitarbeiter  | Warengruppe 1 | Warengruppe 2 | Warengruppe 3
    ------------------------------------------------------------------------------------------
    Muster        |  Artikel 1, Art 2   |   x,y,z                 |  Sonstiges, Anderes
    ------------------------------------------------------------------------------------------
    Im Endeffekt soll ersichtlich sein, Welche Artikel einer Warengruppe dem Mitarbeiter zugewiesen wurden.

    Meine aktuelle Abfrage verbindet derzeit nur die entsprechenden Tabellen mittels der IDs damit alles Daten angezeigt werden. Leider weiß ich nicht wie ich mehrere Warengruppen zuweisen kann, da ich ja nur eine tabelle abfrage (art2mit).

    Mir fehlt einfach ein Denkanstoß bzw. ein hilfreicher mySQL Befehl.. .

    Das ist der vereinfachte aufbau meiner tabellen


    1. mitarbeiter
    Felder (id, name)

    2. art2mit
    (artikel werden hier mitarbeitern zugewiesen)

    Felder (id,warengruppen_id,mitarbeiter_id,menge)

    3. artikel (artikel liste)

    Felder (id,bez)

    4. warengruppen
    (Enthält Warengruppen welche Artikeln in Tabelle Artikel zugewiesen wird)

    Felder (id,gruppe)


    Danke im vorraus

  • #2
    Wenn ich dich richtig verstanden habe ...

    eine Tabelle kann in einer Abfrage mehrfach benutzt werden:
    select DeineFelder from tabelle1, tabelle2 as tab2__1, tabelle2 as tab2__2 ...

    HTH!

    Kommentar


    • #3
      ja, man kann einem mitarbeiter verschiedene artikel zuweisen, diese sind wiederum in verschiedene warengruppen eingeteilt. Und nun möchte ich eine mehrspaltige ansicht erstellen indem ersichtlich ist welche artikel der mitarbeiter aus der jeweiligen warengruppe hat.

      Kommentar


      • #4
        scheint irgendwie nicht zu klappen, iss irgendwo ein fehler drin?

        PHP-Code:
        SELECT

        m
        .id,m.name,
        a.id,a.bezeichnung as art_bez,

        am.idam.art_nram.wg_idam.mit_idam.menge,

        am2.id am2.art_nram2.wg_idam2.mit_idam2.menge,

        am3.idam3.art_nram3.wg_idam3.mit_idam3.menge,


        FROM

        art2mit 
        as am,
        art2mit as am2,
        art2mit as am3,
        artikel a,
        mitarbeiter m,
        warengruppe wg

        WHERE

        am
        .mit_id m.id AND
        am2.mit_id m.id AND
        am3.mit_id m.id AND

        am.art_nr a.id AND
        am2.art_nr a.id AND
        am3.art_nr a.id 
        Code:
        MySQL meldet:  
        
        #1064 - You have an error in your SQL syntax;
        check the manual that corresponds to your MySQL server version for the 
        right syntax to use near 'FROM   art2mit as am ,  art2mit as am2 ,  art2mit as am3 ,  artikel a ,  mitarbe' at line 1

        Kommentar


        • #5
          ich bekomme die abfrage einfach nicht hin...

          Kommentar


          • #6
            Hi yakuzza,

            hinter deinem letzten Feld ist in der Select-Anweisung noch ein Komma - das muss weg.

            Und deine Verknüpfung pass auch noch nicht ganz - kannst du noch einmal alle Tabellen mit ihrer Struktur darstellen? Ich dachte zuerst du hast in der Tabelle "Mitarbeiter" die Felder "Warengruppe1" bis "Warengruppe4" und möchtest diese immer der Tabelle Warengruppe zuordnen ... jetzt bin ich mir aber nicht mehr so sicher.

            Falls das doch so zutreffen sollte informiere dich auch noch einmal über Datenbankenstrukturen (Stichwort: Normalisierung) - was machst du wenn eine 5. Warengruppe hinzukommt ...

            Kommentar


            • #7
              lol.. nein, meine tabellen sind normalisiert

              Ich dachte aus dem FROM Statement wäre ersichtlich welche Tabellen angesprochen werden

              Es existieren mehrere Tabellen

              1. Mitarbeiter (id, name)
              2. Artikel (id, bezeichnung)
              3. Warengruppe (id, gruppe)

              ! Die Felder hab ich der Übersicht halber hier auf das notwendigste gekürzt.

              Jedem Mitarbeiter können n Artikel zugewiesen werden. Diese Artikel können allerdings verschiedenen Warengruppen angehören. Nun möchte ich in einer Übersicht, aufgeschlüsselt nach Warengruppe ausgeben welche und wie viele Artikel einer Warengruppe einem Mitarbeiter zugewiesen wurden. In meinem konkreten Fall weise ich Mitarbeitern Werkzeug, Verbrauchsmaterial und Arbeitskleidung zu.

              P.S. da mit dem Komma hab ich auch schon bemerkt, habs geändert geht aber immernoch nicht

              Kommentar


              • #8
                Moin yakuzza,

                dann sieht die Sache ein wenig anders aus - du kannst die Sätze zu deinen Mitarbeitern nur untereinander ausgeben (sprich eine Warengruppe und ein Artikel pro Mitarbeiter/Zeile). Dann brauchst du die Tabellen Artikel und Warengruppen insgesammt nur einmal.

                Falls du mehrere Artikel/Warengruppen in einer Zeile ausgegeben möchtest muss du eine Kreuztabelle erstellen. Das geht in Normalfall besser mit PHP o.ä. aus der einfach Abfrage (wie oben beschrieben).

                Oder mit CASE ... WHEN kann auch mysql eine Art Kreuztabelle ausgeben - dabei ist allerdings die Zahl der Spalten nicht variabel.

                Für ein spezielles Problem habe ich auch mal folgendes gebastelt: zuerst wird die max. Anzahl der Spalten ermittelt und dann eine temp. Tabelle erstellt und mit den Schlüsseln gefüllt. Anschließend wird daraus die Kreuztabelle durch mehrfach einbinden der Tabellen erstellt (so wie du es jetzt versuchst). Ist aber recht aufwendig - habe ich nur wegen großer Datenmengen gemacht, die sich nicht anders in Form bringen lassen wollten ...

                Kommentar


                • #9
                  hmm.. iss gar nicht so einfach.. wenns nicht klappt dann teil ich es halt in 3 seiten aus anstelle von einer gesamtübersicht.

                  Kommentar

                  Lädt...
                  X