Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Per DB-Befehl alle Artikel = gleiche Bilder?

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Per DB-Befehl alle Artikel = gleiche Bilder?
    am: 23. November 2012, 12:18:47
    Hi zusammen,

    ich hab in einem Testshop über 7000 Produkte die alle die gleichen Bilder bekommen sollen (da Standardbilder).
    Das erste Bild konnte ich schon erfolgreich per DB-Befehl für alle Artikel angleichen:

    Code: SQL  [Auswählen]
    UPDATE products SET `product_image` = '1234.jpg'

    So, nun möchte ich aber auch noch drei weitere Bilder zu jedem Produkt hinzufügen.
    Diese finde ich in der Tabelle product_images, welche dort mit der jeweiligen Produkt-ID verknüpft sind.
    Aber wie bekomme ich diese jetzt an jede vorhandene ID ran?!

    Danke euch schon mal!

    Linkback: https://www.modified-shop.org/forum/index.php?topic=23459.0

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Re: Per DB-Befehl alle Artikel = gleiche Bilder?
    Antwort #1 am: 03. Dezember 2012, 12:38:04
    weiß denn niemand wie ich die beiden tabellen verknüpfe und so überall die gleichen bilder anzeigen lasse?!?

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Per DB-Befehl alle Artikel = gleiche Bilder?
    Antwort #2 am: 03. Dezember 2012, 14:02:50
    Hi Desecrator,
    ich bin mir nicht sicher ob ich Dich richtig verstehe.
    Du hast überall das gleiche 1. Bild. (1234.jpg)
    Ich vermute mal, dass die weiteren Bilder dann 1234_1.jpg, 1234_2.jpg und 1234_3.jpg heissen.

    In diesem Fall würde ich es so machen:
    Code: SQL  [Auswählen]
    UPDATE products_images SET image_name=concat('1234','_',image_nr,'.jpg);
    Vorher:

    +----------+-------------+----------+------------+
    | image_id | products_id | image_nr | image_name |
    +----------+-------------+----------+------------+
    |      715 |          57 |        2 | 57_2.jpg   |
    |      691 |         513 |        1 | 513_1.jpg  |
    |      697 |         503 |        1 | 503_1.jpg  |
    |      611 |         462 |        1 | 462_1.jpg  |
    |      228 |         157 |        1 | 157_1.jpg  |
    |      575 |         428 |        1 | 428_1.jpg  |
    |      390 |         287 |        1 | 287_1.jpg  |
    |      510 |         409 |        2 | 409_2.jpg  |
    |       84 |         103 |        1 | 103_1.jpg  |
    |      708 |         541 |        2 | 541_2.jpg  |
    +----------+-------------+----------+------------+

    Nachher:

    +----------+-------------+----------+------------+
    | image_id | products_id | image_nr | image_name |
    +----------+-------------+----------+------------+
    |      715 |          57 |        2 | 1234_2.jpg |
    |      691 |         513 |        1 | 1234_1.jpg |
    |      697 |         503 |        1 | 1234_1.jpg |
    |      611 |         462 |        1 | 1234_1.jpg |
    |      228 |         157 |        1 | 1234_1.jpg |
    |      575 |         428 |        1 | 1234_1.jpg |
    |      390 |         287 |        1 | 1234_1.jpg |
    |      510 |         409 |        2 | 1234_2.jpg |
    |       84 |         103 |        1 | 1234_1.jpg |
    |      708 |         541 |        2 | 1234_2.jpg |
    +----------+-------------+----------+------------+



    Gruß Billybob

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Re: Per DB-Befehl alle Artikel = gleiche Bilder?
    Antwort #3 am: 03. Dezember 2012, 17:23:03
    Hi Billybob, vielen Dank, das würde schon mal klappen.
    War nur ein kleiner Fehler im Code:

    Code: SQL  [Auswählen]
    UPDATE products_images SET image_name=concat('1234','_',image_nr,'.jpg');

    nun würde er ja alle IDs der produkte mit den image_names besetzen, ABER: es sind ja garkeine IDs vorhanden! Weil eben die ganze Artikel noch garkein Image haben...

    Also müsste ich erst mal alle product-IDs in die products_images reinbekommen...

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Re: Per DB-Befehl alle Artikel = gleiche Bilder?
    Antwort #4 am: 03. Dezember 2012, 17:36:07
    ich habs!

    hier der Code falls ihn auch jemand braucht:

    Code: SQL  [Auswählen]
    INSERT INTO tabelle10 (spalte1, spalte2, spalte3, spalte4, spalte5) SELECT * FROM tabelle5

    jetzt bräucht ich dies halt nur DREIMAL (weils 3 zusätzliche Bilder werden).
    Wie kann ich das machen?!

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Per DB-Befehl alle Artikel = gleiche Bilder?
    Antwort #5 am: 03. Dezember 2012, 18:02:52
    Hi Desecrator,
    wie wär's damit?
    Code: SQL  [Auswählen]
    INSERT INTO products_images (products_id, image_nr, image_name) SELECT products_id,1,'1234_1.jpg' FROM products  WHERE products_image IS NOT NULL AND products_image<>'';
    INSERT INTO products_images (products_id, image_nr, image_name) SELECT products_id,2,'1234_2.jpg' FROM products  WHERE products_image IS NOT NULL AND products_image<>'';
    INSERT INTO products_images (products_id, image_nr, image_name) SELECT products_id,3,'1234_3.jpg' FROM products  WHERE products_image IS NOT NULL AND products_image<>'';

    Gruß
    billybob

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Re: Per DB-Befehl alle Artikel = gleiche Bilder?
    Antwort #6 am: 03. Dezember 2012, 18:08:45
     des Rätsels Lösung:

    man macht erst mal aus alle image_nr = 0 eine 1:

    Code: SQL  [Auswählen]
    UPDATE `products_images` SET `image_nr` = '1' WHERE `image_nr` = '0'

    dann holt man sich das zweite mal die product_ids rüber:
    Code: SQL  [Auswählen]
    INSERT INTO `products_images` (`products_id`) SELECT `products_id` FROM `products`

    aus diesen image_nr = 0 macht man nur 2er:

    Code: SQL  [Auswählen]
    UPDATE `products_images` SET `image_nr` = '1' WHERE `image_nr` = '0'

    dann holt man sich ein drittes mal die product_ids (Code siehe oben) und macht wiederum aus der image_nr = 0 eine 3:

    Code: SQL  [Auswählen]
    UPDATE `products_images` SET `image_nr` = '3' WHERE `image_nr` = '0'

    Als Ergebnis hat man dann 3x die gleiche products_image mit jeweils image_nr 1, 2 und 3.
    Zu guter letzt führt man

    Code: SQL  [Auswählen]
    UPDATE products_images SET image_name=concat('1234','_',image_nr,'.jpg');

    aus!

    BASTA :)

    EDIT: Billy war schneller und hats auch noch sauberer ;)
    Aber zumindest kann man mir nicht nachsagen ich hätte mir keine Mühe gegeben ;)
    17 Antworten
    13443 Aufrufe
    27. Oktober 2012, 16:37:31 von keineLustmehr
    7 Antworten
    4097 Aufrufe
    11. Oktober 2012, 21:53:02 von noRiddle (revilonetz)
    2 Antworten
    2783 Aufrufe
    02. Dezember 2010, 16:30:26 von EarthPlague
    7 Antworten
    5518 Aufrufe
    29. November 2012, 22:27:49 von AllyG
               
    anything