SQL-Befehl Preise in neues Feld übertragen?

Thema wurde von Anonymous, 27. September 2012 erstellt.

  1. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.910
    Danke erhalten:
    1.559
    Danke vergeben:
    1.135
    Hallo Leute
    ich habe mir im admin-Bereich ein neues Eingabefeld eingebaut "Hersteller UVP:", um evtl. Ärger wegen der "statt-Preise" vorzubeugen.
    Gibt es evtl. einen Befehl mit dem ich für alle Artikel den Verkaufspreis in dieses neue Feld bekomme?
    Bin ja ne faule Sa.....:)
     

    Anhänge:

  2. Gerd Schoolmann

    Gerd Schoolmann Erfahrener Benutzer

    Registriert seit:
    23. August 2012
    Beiträge:
    165
    Danke erhalten:
    23
    Danke vergeben:
    21
    Hallo Achim,

    also einzel ginge es ja über ALTER bzw. UPDATE. Aber für alle Artikel....Zuerst müsstest Du ja in der Tabelle products das Feld hersteller_uvp erzeugen.

    PHP:
    ALTER TABLE products ADD `hersteller_uvpdecimal(4,2)
    und dann zu jedem Artikel den entsprechenden Herstellerpreis angeben. Das geht in der DB meines Wissens über die products_id. Wäre dann nach anlegen des Feldes Hersteller UVP für einen einzelnen Artikel z.B. ungefähr so:

    UPDATE 'products' SET 'hersteller_uvp'="xx.xx" WHERE 'products_id'="xxx"

    Habe die Synthax jetzt nicht getestet.

    Auf jeden Fall musst Du aber jeder products_id die entsprechende UVP zuweisen. Das geht zwar auch über SQL, dauert aber m.E. genauso lange, als wenn Du es über den Adminbereich einfügst.
     
  3. sileo

    sileo Erfahrener Benutzer

    Registriert seit:
    22. März 2012
    Beiträge:
    2.266
    Danke erhalten:
    274
    Danke vergeben:
    205
    Hallo Achim, den Aufwand mußt Du eigentlich nicht betreiben.

    Ersetze "Statt2 durch "UVP", gib im Footer den Hinweis, was UVP heißt und sorge dafür, das diese UVP`s auch wirklich echt sind.
    So machen wir das und ist vom HB abgeegnet.
     
  4. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.910
    Danke erhalten:
    1.559
    Danke vergeben:
    1.135
    Hallo Gerd

    Danke erstmal. Die Felder sind ja schon vorhanden in der DB, sonst würden sie ja nicht angezeigt werden. Wenn ich den DB-Befehl auch einzeln machen müsste, kann ich es ja auch gleich im Artikel ändern.
    Ich dachte an einen Befehl der diesem Feld UVP den Wert aus dem Feld price überträgt.

    Hallo Angelika

    Das ist natürlich die einfachere Lösung! :)
     
  5. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Ich glaube, du suchst so etwas:

    Code:
    UPDATE products SET hersteller_uvp = products_price
    Das würde in allen Zeilen der Tabelle products den Wert aus der Spalte products_price in die Spalte hersteller_uvp übertragen. Gegebenenfalls also besser noch eine passende WHERE-Bedingung anhängen, wenn nicht alle Artikel gemeint sind.
     
  6. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.910
    Danke erhalten:
    1.559
    Danke vergeben:
    1.135
    Hallo Marco

    Danke. Hab's ausprobiert, funktioniert auch, allerdings werden die Netto-Beträge übertragen mit 4 Stellen hinter dem Komma.
    Bekommen wir das auch noch hin?
     
  7. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Hallo,

    die Preise in der Datenbank sind immer netto und werden vom Shop erst bei der Verarbeitung umgerechnet. Bruttopreise in der Datenbank zu bekommen, ist mit etwas Um-die-Ecke-Denken verbunden. Hinter meine Ecke finde ich so etwas:

    Code:
    create temporary table pricetrans SELECT products_id, (products_price * ((100 + tax_rate)/100)) as brutto FROM `products` p
    left join tax_rates tr on tr.tax_class_id = p.products_tax_class_id and tax_zone_id = 5;
    
    update products p set p.hersteller_uvp = (SELECT brutto FROM pricetrans pt WHERE pt.products_id = p.products_id);
    
    Natürlich wie immer ohne jegliche Gewähr.
     
  8. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.910
    Danke erhalten:
    1.559
    Danke vergeben:
    1.135
    Das ist ja nur was für Mutige... :)
    Habe ich natürlich nach einer DB-Sicherung gemacht und funktioniert, bis auf das er jetzt 12 Stellen hinter dem Punkt anzeigt..:(
     
  9. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Das kannst du am besten bei der Ausgabe per PHP wegrunden:

    PHP:
    $gerundet number_format($zu_genau2',''');
     
  10. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.910
    Danke erhalten:
    1.559
    Danke vergeben:
    1.135
    Wo? In der product.php oder der ProductInfoContentView.inc.php...........?
     
  11. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Ich weiß zwar nicht ganz genau, was du da machst, aber rein theoretisch sollte es irgendwo in user_classes/overloads/ProductInfoContentView/ passieren.
     
  12. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.910
    Danke erhalten:
    1.559
    Danke vergeben:
    1.135
    inzwischen weiß ich es auch nicht mehr :), ne weiß ich schon. Nur der Tipp von Angelika ist natürlich viel einfacher umzusetzen und reicht ja auch vollkommen.
    Aber jetzt habe ich es halt geschafft in der Artikelbeschreibung (Backend und Frontend) ein neues Feld einzubauen und mal schauen ob das vielleicht auch für was anderes gut ist.