Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Daten aus einer Tabelle mit Daten aus anderer Tabelle ableichen und ...

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von michaelderweise, 28 November 2015.

  1. michaelderweise

    michaelderweise Benutzer

    Hallo,

    ich hoffe, dass ich hier mit meinem Anliegen richtig bin.

    Ich habe folgendes Anliegen:

    Ich habe aus einer Tabelle, wo Artikel bestimmten Kategorien zugewiesen sind, alle Artikel einer Kategorie anzeigen lassen. Das klappt natürlich.
    Dann habe ich eine zweite Tabelle wo diese Artikel ebenfalls aufgeführt sind, aber keiner Kategorie zugewiesen sind, weil es in dieser Tabelle kein Feld "Kategorie" gibt. Nun habe ich schon mal in dieser Tabelle das Feld "Kategorie" eingefügt.

    Nun kommt die eigentliche Aufgabe:

    Ich möchte alle Artikel, die ich in der Tabelle 1 schon selektiert habe, in Tabelle 2 suchen lassen und die in Tabelle 1 zugeordnete Kategorie nun auch in dieser Tabelle hinterlegen.



    Kann mir einer einen Hinweis geben, wie ich das machen kann ?

    Vielen Dank
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from t1;
     artikel | kat
    ---------+-----
      1 |  10
      2 |  20
      3 |  20
    (3 rows)
    
    test=*# select * from t2;
     artikel
    ---------
      1
      2
      3
    (3 rows)
    
    test=*# alter table t2 add column kat int;
    ALTER TABLE
    test=*# update t2 set kat=t1.kat from t1 where t1.artikel=t2.artikel;
    UPDATE 3
    test=*# select * from t2;
     artikel | kat
    ---------+-----
      1 |  10
      2 |  20
      3 |  20
    (3 rows)
    
    Einfach, oder?
     
  3. michaelderweise

    michaelderweise Benutzer

    Hmm, danke für die Antwort,
    da ich ja ein Anfänger bin bitte ich um Nachsicht.

    Ich drösel hier mal das ganze mit realen Namen auf:

    1.
    SELECT * FROM `s_articles_categories` WHERE categoryID ='62'

    funktioniert

    2. Schritt von dir brauch ich glaube ich nicht.

    2. Schritt von mir:

    ALTER TABLEs_articles_prices ADD CatecoryID int(11);

    funktioniert

    3. Schritt:

    update s_articles_prices set CategoryID=s_articles_categories.categoryID from s_articles_categories where s_articles_categories.articleID=s_articles_prices.articleID;

    gibt eine Fehlermeldung.

    Der sinn des 3. Schrittes: Die Tabelle s_articles_prices soll verändert werden und zwar so: suche in der Tabelle s_articles_categories , in der nach Schritt eins eine Vorauswahl getroffen wurde nach einer Artikelnummer, schau, ob diese Nummer auch in s_articles_prices vorhanden ist und schreibe dann in s_articles_prices in das Feld CategoryID den Wert von CategoryID aus Tabelle s_articles_categories. Das ganze soll wie gesagt eingeschränkt werden nach der Vorauswahl die in Schritt 1 vorgenommen wurde
     
    Zuletzt bearbeitet: 29 November 2015
  4. akretschmer

    akretschmer Datenbank-Guru

    Interessant.
     
  5. michaelderweise

    michaelderweise Benutzer

    schade, dass läuft jetzt wieder darauf hinaus, dass Guru dem Noob eine Antwort gibt, Noob nix versteht und Guru sagt: Interessant.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Auch ein 'Guru' kann aus der simplen Aussage, daß es da eine Fehlermeldung gab, nicht die Ursache oder gar die Lösung erraten. Also ich zumindest nicht.
     
  7. michaelderweise

    michaelderweise Benutzer

    Ahso:

    hier die Fehlermeldung:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from s_articles_categories where s_articles_categories.articleID=s_articles_pric' at line 1
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Ja, dann mach das doch mal! Vielleicht kann MySQL das, wie sooo vieles, halt nicht. Mich würde es nicht wundern.
     
  9. ukulele

    ukulele Datenbank-Guru

    Probier es mal in der Art:

    Code:
    UPDATE    t2
    SET        t2.kat = t1.kat
    FROM    t2
    INNER JOIN t1
    ON        t1.artikel = t2.artikel
     
  10. michaelderweise

    michaelderweise Benutzer

    Danke ich hab es jetzt so gelöst:

    ALTER TABLE s_articles_prices ADD CategoryID int(11);
    UPDATE s_articles_prices, s_articles_categories SET s_articles_prices.categoryID=s_articles_categories.categoryID WHERE s_articles_prices.articleID=s_articles_categories.articleID AND s_articles_categories.categoryID=62;
    UPDATE s_articles_prices SET pseudoprice = price, price = price/2 WHERE categoryID= 62;
    ALTER TABLE s_articles_prices DROP CategoryID;
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden