Announcement

Collapse
No announcement yet.

abfrage problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • abfrage problem

    also es geht folgendes:

    in mehrere auswahllisten können mehrere optionen ausgwaehlt werden. sagen wir mal Liste A1, A2, A3, A4. die Haupttabelle TABELLE1 enthaehlt die kompletten Informatıonen zu allen Produkten. Dabei wird ein Produkt an Hand des Produktnummer und Modelnummer identifiziert. Es gibt eine zweite Tabelle TABELLE2 und dieser kann für jedes Produkt aus der TABELLE1 mehrere Attribute enthalten die aus den Listen A1, A2, A3 und A4 kombinativ oder einzeln stammen können Beispiel:

    TABELLE1:

    PN MD Beschr. Name. Preis Menge
    100 13 ... Apfelku. 2,75 1

    TABELLE2:

    PN MD KEY VALUE
    100 13 A1 Schokolade
    100 13 A1 Vanilie
    100 13 A2 Mit Erdbeere
    100 13 A3 E120
    100 13 A3 E123
    100 13 A3 E234
    100 13 A4 Kekse

    wie kann ich jetzt ein Query schreiben das aus TABELLE1 nur die Produkte auswaehlt die aus den Listen A1, A2, A3, A4 die entsprechenden Werte enthalten?

    mfg

    kurt

  • #2
    Hallo!

    Entweder die Tabellen A1..A4 in EINE Tabelle zusammenführen, aus der dann die Optionen wählbar sind.

    Oder:
    Die Tabelle2 aufteilen in TabelleA1 TabelleA2 TabelleA3 TabelleA4
    in denen dann jeweils nur die Optionen einer der A Tabellen enthalten sind.
    Dann kannst Du problemlos selektieren und Deine Tabelle2 über einen View erstellen

    select 'A1' as key, PN, MD, Bezeichnung from TabelleA1
    union
    select 'A2' as key, PN, MD, Bezeichnung from TabelleA2
    usw.

    Die Sache mit den "gemischten Referenzen" in Tabelle2 wird Dir immer wieder Ärger machen.

    BYE BERND

    Comment


    • #3
      A1, A2, A3, A4 sind Beispiel. das sind definierbare Listen. Es können weitere hinzugefüt werden oder auch nur eine oder zwei solche Listen definiert sein.
      Daher wird alles in eine einzelne Tabelle gesammelt und mittels der Spalte KEY aufgeteilt.

      PN steht für Produktnummer aus TABELLE1
      MD für Modelnummer aus TABELLE1
      KEY für die jeweilige Liste
      VALUE als eines der Werte dieser Liste.

      Comment


      • #4
        ausserdem können aus jeder definierten Liste eine oder mehrere Attribute als Suchkriterium angegeben sein.

        Comment


        • #5
          Hallo!

          Schon klar...

          Solche Dinge haben wir auch.
          Gelöst wie folgt:
          Eine hierarchische Liste mit den Listen A1.. als Oberbegriffe
          A1
          -Erdbeere
          -Vanille
          A2
          -E110
          A3
          -Keks

          Jetzt kann ich leicht Optionen auswählen, beliebig ergänzen und habe trotzdem nur die Referenz auf EINE Tabelle.
          In Deinem Modell mußt Du jedesmal wenn eine Neue Tabelle A1001 hinzukommt Deine Zugriffe auf die Datenbank neu schreiben.

          Oder darfst Du das Datenbankmodell nicht ändern?!?
          Dann wirf mein Posting in die Tonne ;-)

          BYE BERND

          Comment


          • #6
            die sache ist folgendes: ich muss die Attributliste variabel gestalten. Weil jederzeit neue Attributlisten hinzukommen können bzw. entfernt werden können. Sagen wir mal so rum:

            A1 = Obstsorten
            A2 = Gemüsesorten
            A3 = Technische Angebote etc.
            A4 = Sportarten

            In A1 stehen im Beispel Obstsorten, in A2 Gemüsesorten etc. Diese sollen als Suchkriterium verwendet werden können. Damit ich die Suchroutine nicht bei jeder Aenderungen reprogrammieren muss, habe ich einfach diese Tabelle2 definiert. In dieser will ich all diese Angaben sammeln und mittels des jeweils definierten Schlüssels von einander trennen und in das Programm als eigentstaendige Listen laden können. (ich kann jetzt nicht hingehen und jedesmal neue Tabellen anlegen oder andere entfernen und das ganze auch noch im Quellcode reprogrammieren. Zuviel aufwand.)

            Eine suche könnte so aussehen - Gesucht werden alle Modelle die:

            - A1 = Apfel ODER Banane ODER Erbeer enthalten
            - A2 = Tomaten ODER Gurken enthalten
            - A3 = <überspringen>
            - A4 = <überspringen>

            es muss doch möglich sein, eine entsprechende Abfrage zu klaeren.

            Comment


            • #7
              ich habe mir INNR JOIN angesehen bin aber da nicht ganz schlau daraus geworden. würde das damit gehen und wenn ja, wie?

              Comment


              • #8
                Hallo!

                Siehst Du nicht, dass sowohl die Abfrage, als auch die Eingabe der Selektionswerte für den Anwender immer komplizierter wird. Wenn das mal 10-15 Tabellen sind kann das doch keiner mehr bedienen geschweige denn pflegen.

                Wenn Du schon auf eine Trennung bestehts mach diese doch wenigstens im Bereich der Selektion.

                Tabelle Selektionskriterien
                ID
                Bezeichnung
                Art

                Inhalt
                1 Orange - Frucht
                2 Apfel - Frucht
                3 Kartoffel - Gemüse
                4 Angebot - Tech. Angebot
                5 Storno - Tech. Angebot

                Kriterien für Modelle
                Modell
                Selektionskriterium ID

                Modell A - Orange (ID=1)
                Modell A - Kartoffel (ID=3)
                Modell B - Apfel (ID=2)
                Modell B - Storno (ID=5)

                Damit hast Du EINE Tabelle mit den möglichen Kriterien, die beliebig erweiterbar ist, in dem Du einfach neue Arten einsetzt.
                Und die Tabelle, die Modelle und Kriterien miteinander verbindet hat nur EINE Referenz.

                Ein Select wäre dann z.B.
                select * from Modell where Modell in (select Modell from ModellKriterien where Selektionskriterium in ( 'Apfel', 'Birne', 'Storno' ))

                Statt der Wörter müssen natürlich die IDs der Selektionen dort stehen.
                Leicht zu lesen, pflegen und bedienen...

                Ehrlich Du machst Dich kaputt mit immer neuen Tabellen für weitere Kriterien.

                BYE BERND

                Comment

                Working...
                X