Ankündigung

Einklappen
Keine Ankündigung bisher.

Artikelabfrage

Einklappen

Neue Werbung 2019

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

  • Artikelabfrage

    Hallo zusammen,

    ich habe folgendes Problem:

    Mir liegt eine Tabelle mit folgendem Aufbau vor:

    Artikel1 | Einzelteil_A| Einzelteil_B | Einzelteil_C | Einzelteil_D...
    Artikel2 | Einzelteil_B | Einzelteil_D | Einzelteil_G...
    Artikel3 | Einzelteil_H | Einzelteil_Y
    .
    .
    .

    Die Artikel in der ersten Spalte sind Unique, die Einzelteile sind kreuz und quer angelegt.

    Es gibt also Artikel, die aus 5 Einzelteilen bestehen, aber auch andere, die 20 Einzelteile haben.

    Nun möchte ich gerne über eine Suchfunktion rausfinden, welche Artikel beispielsweise Teil B und Teil D enthalten (Im Beispiel Artikel 1 und Artikel 2).

    Ich habe keine Idee, wie die passende Abfrage dafür aussehen könnte.

    Leider fällt es mir auch schwer, hiernach zu suchen. Ich hoffe einfach, dass mir jemand zumindest mal einen kleinen Wink mit dem Zaunpfahl geben kann.

    Vielen Dank im Voraus,

    Florian

  • #2
    Zitat von fsonneborn Beitrag anzeigen
    Hallo zusammen,

    ich habe folgendes Problem:

    Mir liegt eine Tabelle mit folgendem Aufbau vor:

    Artikel1 | Einzelteil_A| Einzelteil_B | Einzelteil_C | Einzelteil_D...
    Artikel2 | Einzelteil_B | Einzelteil_D | Einzelteil_G...
    Artikel3 | Einzelteil_H | Einzelteil_Y
    .
    .
    .

    Die Artikel in der ersten Spalte sind Unique, die Einzelteile sind kreuz und quer angelegt.

    Es gibt also Artikel, die aus 5 Einzelteilen bestehen, aber auch andere, die 20 Einzelteile haben.

    Falsches Tabledesign. Ändere dies, und Dein Problem ist gelöst.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Hi,

      versteh ich das richtig, das die Spalten nach jedem Artikel willkürlich mit den jeweiligen Bestandteilen befüllt sind (also z.B. keine feste Zuordnung über eine entsprechende Spalte)? Wenn ja, Normalisieren!

      mfg Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Hallo Wolf29,

        Es handelt sich um ca. 5.000 Artikel, welche jeweils aus insgesamt 32.000 verschiedenen Einzelteilen zusammengestellt werden.

        Es gibt Artikel, die nur aus 2 Einzelteilen bestehen, aber eben auch welche, die 20 verschiedene Einzelteile beinhalten.

        Ziel der Abfrage soll sein, herauszufinden, welche der 5.000 Artikel beispielsweise Einzelteil A und Einzelteil H enthalten.

        Kommentar


        • #5
          Zitat von fsonneborn Beitrag anzeigen
          Hallo Wolf29,

          Es handelt sich um ca. 5.000 Artikel, welche jeweils aus insgesamt 32.000 verschiedenen Einzelteilen zusammengestellt werden.

          Das mag sein. Ändert aber nichts am falschen Design.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Wie wäre das Design denn richtig?

            Kommentar


            • #7
              Wie wäre das Design denn richtig?
              http://www.tinohempel.de/info/info/d...alisierung.htm

              mfg wolf29
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Zitat von fsonneborn Beitrag anzeigen
                Wie wäre das Design denn richtig?
                Code:
                test=*# create table artikel (a_id serial primary key, name text);
                CREATE TABLE
                test=*# create table bauteil (b_id serial primary key, name text);
                CREATE TABLE
                test=*# create table artikel_bauteil (a_id int references artikel, b_id int references bauteil, primary key(a_id, b_id));
                CREATE TABLE
                Als grober Ansatz.
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #9
                  OK, vielen Dank für die Ansätze.

                  Ich werde mich dann mal ein wenig schlau machen und mein Bestes versuchen.

                  Kommentar


                  • #10
                    Hier ist noch eine (mMn) ganz gute Erklärung zum Einstieg: http://www.peterkropff.de/site/mysql/normalisierung.htm
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Hallo nochmal,

                      wenn ich das richtig verstehe, sollte ich also 3 Tabellen anlegen:

                      1. Baugruppen
                      ID | Baugruppennummer

                      2. Einzelteile
                      ID | Einzelteilnummer

                      3. Fertigteile
                      ID Baugruppe | ID Einzelteile

                      wobei die Tabelle Fertigteile dann so gefüllt wäre:

                      Baugruppe1 | Einzelteil1
                      Baugruppe1 | Einzelteil2
                      Baugruppe1 | Einzelteil3
                      Baugruppe2 | Einzelteil1
                      Baugruppe2 | Einzelteil2
                      .
                      .
                      .

                      Kommentar


                      • #12
                        Zitat von fsonneborn Beitrag anzeigen
                        Hallo nochmal,

                        wenn ich das richtig verstehe, sollte ich also 3 Tabellen anlegen:

                        So in etwa. Immer schön mit Foreign Keys arbeiten.
                        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                        Kommentar


                        • #13
                          Also immer schön Primärschlüssel vergeben und auf diese verweisen. Leuchtet mir nach der kleinen Lektüre ein.

                          Vielen Dank nochmal!

                          Kommentar


                          • #14
                            Zitat von fsonneborn Beitrag anzeigen
                            Also immer schön Primärschlüssel vergeben und auf diese verweisen.
                            Genau. Aufpassen, es sind noch vereinzelt Datenbanken aus dem letzten Jahrtausend unterwegs, die das teilweise nicht richtig können ...
                            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                            Kommentar


                            • #15
                              Meinst du zufälligerweise MySQL xD ?
                              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                              Kommentar

                              Lädt...
                              X