array mit integer in mysql vergleichen

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

  • array mit integer in mysql vergleichen

    Hallo,

    ich speichere über ein php formular (mehrfachauswahl) ein array mittels serialize in eine zelle einer tabelle.

    in einer Tabelle z.B. bestellung werden die ausgewählten artikel in einem array in der zelle artikel gespeichert. Der Wert eines Artikel ist seine ID in der Tabelle Artikel.

    nun möchte ich eine abfrage erstellen inder ich die ID aus der Tabelle Artikel mit dem Array in der Tabelle Bestellung vergleiche.

    ID = (INT)
    z.b. 1, 2, 3 usw...

    Artikel = ARRAY (über serialize eingefügt)

    Der Eintrag von Artikel sieht z.b. so aus:

    Code:
    a:2:{i:0;s:9:"243265342";i:1;s:8:"24332564";}
    Kennt sich jmd. mit so etwas aus?
    Zuletzt geändert von yakuzza; 07.10.2005, 13:49.

  • #2
    was heißt "vergleichen"? was genau willst du selektieren?

    Kommentar


    • #3
      ich möchte z.b.

      das Feld ID aus der einen Tabelle mit den Werten des Arrays aus der 2. Tabelle vergleichen.


      das array enthält ids aus der ersten tabelle..

      Ich wähle in einer Liste mit mehrfachauswahl ein paar einträge aus, diese haben als wert die id des artikels.

      die abfrage sollte ungefähr so lauten


      Select * From tabelle1, tabelle2 where ID LIKE Artikel.. geht aber ja nicht da im feld artikel ein array sitzt.

      Kommentar


      • #4
        Original geschrieben von yakuzza
        geht aber ja nicht da im feld artikel ein array sitzt.
        Ach nee, schau an.

        Also müsstest du dir wohl entweder in SQL erst mal eine Parser-Funktion basteln, die anhand der serialisierten Daten ermitteln kann, welcher Teil davon nun einer ID entspricht - oder du verzichtest auf das serialisierte Ablegen der Daten in der DB. Ich verstehe sowieso nicht, wozu das gut sein soll.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          erst die zelle auslesen, unserialize() anwenden, einzelne elemente durchlaufen, eine query bilden ("WHERE ... IN (id1, id2, id3)" o.ä.), ausführen, genießen.

          Kommentar


          • #6
            Original geschrieben von wahsaga

            verstehe sowieso nicht, wozu das gut sein soll.
            Kennst du noch ne andere Möglichkeit mit der ich ein Select Feld mit mehrfachauswahl in eine tabellen zelle einfügen kann, außer mittels serialize?

            Kommentar


            • #7
              Original geschrieben von penizillin
              erst die zelle auslesen, unserialize() anwenden, einzelne elemente durchlaufen, eine query bilden ("WHERE ... IN (id1, id2, id3)" o.ä.), ausführen, genießen.
              Das wäre ne möglichkeit.. Ich denke einfach immer zu kompliziert

              Kommentar


              • #8
                yakuzza, weißt du, was "normalisierung" im bezug auf die rdbms bedeutet?

                Kommentar


                • #9
                  ja, und das ist gerade das problem.. meine tabellen sind zentral aufgebaut das ich eben eine normalisierte form erhalte.. allerdings hab ich damit noch ein paar kleinere probleme, da ich "learning by doing" noch kein profi in dem thema bin..


                  wie gesagt existiert z.b. eine tabelle namens artikel, dort werden alle wichtigen eigenschaften eines artikels gespeichert, alles was mit dem artikel zu tun hat.

                  in der bestellform wird diese tabelle dann zuerst abgefragt um eine auswahl von artikeln zu erhalten.

                  die auswahl wird an ein script übergeben das die daten dann an die datenbank übergibt.. der formularwert des bestellten artikels ist die ID (Primärschlüssel) des artikels in der tabelle artikel..

                  Kommentar


                  • #10
                    und welche "vorteile" bringt das serialisieren gegenüber dem einfachen zuordnungsprinzip "user_id -> artikel_id" (ein datensatz pro zuordnung)?

                    Kommentar


                    • #11
                      noch gar keinen, das problem ist das ich über die mehrfachselect form mehrere artikel in einer zelle speichere..

                      wenn ich diese daten folgendermaßen absende z.b.

                      artikel[]

                      steht in der zelle nun ARRAY

                      speichere ich sie aber so:

                      $artikel = serialize($_POST['artikel'][$i])

                      und füge diese dann über ein for schleife in die tabelle ein kann ich alle werte speichern..

                      vlt. ist das ja auch ein zu komplexer weg.. für andere vorschläge bin ich gerne offen.. hab lange gesucht und nur die serialize möglichkeit gefunden..

                      Kommentar


                      • #12
                        das ist ein typisches vorgehen - du machst es dir an einer stelle (beim speichern) einfach, bekommst aber an einer anderen stelle (auslesen) probleme.

                        einen vorschlag habe ich dir bereits gemacht.

                        Kommentar

                        Lädt...
                        X