Announcement

Collapse
No announcement yet.

Mehrere Werte aus mehreren Spalten in eine Spalte

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

  • #16
    dann ließe sich das aber immer mehr ebenen runter führen bis zur Warenwirtschaft und da darf man nich rumbasteln, ob ich das dann also nun auf SQL-Ebene oder MySQL-Ebene mache spielt doch dann keine Rolle mehr

    Comment


    • #17
      Originally posted by emerel View Post
      dann ließe sich das aber immer mehr ebenen runter führen bis zur Warenwirtschaft und da darf man nich rumbasteln, ob ich das dann also nun auf SQL-Ebene oder MySQL-Ebene mache spielt doch dann keine Rolle mehr
      Hmm..
      Also nach dem rein schaufeln, welches ich annehme immer wieder mal vorkommen könnte, ein Script ablaufen lassen um KeyPreis zu erzeugen.

      Hier habe ich keine Lösung. Das bedeutet nämlich Datensatz für Datensatz auslesen und jeden einzelnen Datensatz updaten. Also nicht per INSERT, sondern per UPDATE,
      PHP Code:
      UPDATE Preis SET KeyPreis = (CONCAT...... 
      da ja bereits Felder gefüllt sein könnten, zu mindestens ab dem zweiten mal, um KeyPreis zu füllen.

      Da muss ich etwas darüber nachdenken!

      Franz

      Comment


      • #18
        danke das du dir für mich den Kopf so zerbrichst hoffe dir fällt noch was ein ich bin mit meinem latein am ende mann könnte zwar die Artikelnummer usw auslesen und jeweils in arrays abspeichern, die dann auslesen und dann zusammengesetzt in die KeyPreis schreiben, aber das dauert zu lange

        naja, die Tabelle wird jedesmal neu erstellt, das heißt das die KeyPreis jedesmal leer wäre wenn man sie wieder füllen will

        Comment


        • #19
          Habe mal eben was einfach ausprobiert, denke manchmal einfach zu kompliziert:

          Also Feld KeyPreis anlegen;
          PHP Code:
          UPDATE Preis SET KeyPreis = (CONCAT(ArtikelnummerPreistypTypnummer)) 
          Habe dies mal eben im PHPMyAdmin laufen lassen und es funzt, natürlich mit den Hochkommas, etc..

          Gruß Franz
          Zuletzt editiert von FraHa; 03.03.2010, 12:00. Reason: Sorry, nicht Tabelle, sondern Feld

          Comment


          • #20

            ich kniehe nieder vor deiner Macht

            wunderbar ich danke dir Vielmals

            ein Problem is aber noch... wenn nur in Null dabei is, ist das Endergebnis auch Null, aber ich denke das man das mit Default werten ausgleichen kann

            Comment


            • #21
              Dies mit der NULL hatte ich bislang noch nicht, aber "COALESCE" sollte Abhilfe bringen


              PHP Code:
              UPDATE Preis 
              SET KeyPreis 
              = (CONCAT(COALESCE(Artikelnummer), COALESCE(Preistyp), COALESCE(Typnummer))) 
              Franz

              Comment


              • #22
                Dann ist aber KeyPreis eigentlich kein Primärschlüssel in dem Sinne. Dieser MUSS beim Einfügen in die Datenbank gesetzt werden. Bei der Lösung von FraHa muss ich die Spalte KeyPreis erstmal auf NULL setzen und danach das INSERT Kommando laufen lassen. Könnte man höchstens einen Unique Constraint auf die Spalte setzen... toll ist aber was andres

                Comment


                • #23
                  ich muss keine Primärschlüssel am anfang setzen, im Gegenteil, ich setz die meisten im Nachhinein erst rein....
                  hmm was soll dieses COALESCE bewirken bei mir tut sich nichts

                  Comment


                  • #24
                    Originally posted by fanderlf View Post
                    Dann ist aber KeyPreis eigentlich kein Primärschlüssel in dem Sinne. Dieser MUSS beim Einfügen in die Datenbank gesetzt werden. Bei der Lösung von FraHa muss ich die Spalte KeyPreis erstmal auf NULL setzen und danach das INSERT Kommando laufen lassen. Könnte man höchstens einen Unique Constraint auf die Spalte setzen... toll ist aber was andres
                    Ich will das Alles nicht bestreiten, doch zuerst brauchte es eine Lösung um die Daten überhaupt in die Tabelle Preis, in das Feld KeyPreis zu bringen. Ich sehe es erstmal als Vorgabe von emerel.
                    Gerade im Zusammenhang mit der Übernahme, der Migration von Altdatenbeständen aus anderen Systemen, ergeben sich einfach oft gewachsenen Strukturen die nicht mal eben so durchbrochen werden können.

                    Ich würde dies auch nicht so machen wollen, schon alleine weil ich die Daten die in KeyPreis rein geschrieben werden ja ohnehin auch jederzeit ohne KeyPreis erhalten kann, ob Schlüßel hin oder her.

                    Gruß Franz

                    Comment


                    • #25
                      Wie auch immer ich danke für die guten Ratschläge und bsonders für FraHa´s Idee mit dem CONCAT, hat mir echt weitergeholfen

                      MfG emerel

                      Comment


                      • #26
                        Hallo,
                        Originally posted by emerel View Post
                        ...wenn man autoid nehmen würde, ist das Problem wenn z.B. Artikel gelöscht werden und neue angelegt werden gehen die ID werte einfach weiter ohne die Alten zu ersetzen.
                        Genau das ist der Sinn eines PK - einen DS eindeutig zu identifizieren, nicht mehr und nicht weniger! Ob dieser eine fortlaufende Reihe ist, spielt überhaupt keine Rolle.

                        Originally posted by emerel View Post
                        ...Außerdem muss man irgendwie vergleichen ob die werte aus der Warenwirtschaft mit denen im SQL und in MySQL übereinstimmen, deswegen die sache mit den zusammengesetzten Primärschlüssel.
                        Das kann man genauso (bzw. besser) mit einem rein technischen Schlüssel prüfen, dazu benötigt man keinen Zusammenhang mit den Daten

                        Originally posted by emerel View Post
                        ...man könnte nun auch den Primärschlüssel über zwei Spalten legen, aber das ging vor 4 Jahren noch nich, und man müsste nun mit viel aufwand den Shop umschreiben und dazu is überhaupt keine zeit....
                        Deshalb nimm ein einzelnes Feld mit einem technischen PK!

                        Gruß Falk
                        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                        Comment


                        • #27
                          ha, kein wunder das das COALESCE nicht funktioniert hat, da hat der zweite Parameter gefehlt
                          Code:
                          UPDATE Preis 
                          SET KeyPreis = (CONCAT(COALESCE(Artikelnummer, 0), COALESCE(Preistyp, 0), COALESCE(Typnummer, 0)))

                          Comment

                          Working...
                          X