rekursive Datenbankabfrage

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

  • rekursive Datenbankabfrage

    hallo hallo,

    unser entwickler hat nun gekündigt und nun muss ich mich als leihe damit rumplagen evtl kann mir da jemand helfen? das wäre super

    IST-ZUSTAND
    es gibt 2 tabellen.. die eine ist das produktthema und die andere das produkt selber.. ein produkt kann mehrere produktthemen beinhalten. die themen werden derzeit mit Leerzeichen getrennt in die spalte "themen" der produkttabelle geschrieben..
    Beispiel der Produkttabelle -> Thema: "RADIO & TV MÖBEL"

    die Produkttabelle kann via csv-export exportiert werden.


    SOLL-ZUSTAND
    beim csv export soll via SQL-Abfrage rekursiv die themen via "," getrennt werden anstatt wie es in der "Themen-Spalte" ist mit leerzeichen. Daher müsste ich ja die Produkttabelle mit der Spalte THEMEN rekursiv mit der Themen Tabelle vergleichen, so das dann sowas beim csv-export rauskommt:
    "RADIO & TV, MÖBEL"


    da ich wie schon gesagt ein leihe bin habe ich keine ansatzideen wie ich das machen könnte :-( vieleicht habt ihr es ja?

    lg
    lara

  • #2
    1. Es heißt Laie

    2. Irgendwie sieht das nach einem ganz miesen Design aus. Imho solltest du die Datenbank vielleicht komplett umbauen.

    3. Den Designfehler erkennst du ja schon an deinem Beispiel. Woher soll MySQL denn erkennen, dass es "RADIO & TV" und "MÖBEL" heißt. Es könnte doch auch so sein: "RADIO &" und "TV MÖBEL". Das kannst nur du händisch aufdröseln.

    4. Mein Tipp. Informier dich über Normalisierung, da auch dein Vorschlag "RADIO & TV, MÖBEL" nicht das Gelbe vom Ei ist.

    5. Beschränke das Problem nicht auf den csv-Export. Das ganze System ist viel zu redundant.

    Gruß
    Peter
    Zuletzt geändert von Kropff; 24.01.2010, 14:58.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      OffTopic:
      Bei dem Layout hätte ICH dem Entwickler gekündigt.


      Aber das hilft nichts, ausbaden musst du die Sache. Ich würde daher auch empfehlen in den sauren Apfel zu beißen und das ganze zu normalisieren.

      OffTopic:
      Wenns so ganz und gar nicht dein Ding ist, es gibt ja auch Freelancer, die kurzfristig einspringen können. Bei uns kannst du auch Jobangebote einstellen.

      Kommentar


      • #4
        ja das ist nicht die beste Programmierung große Änderungen am Code sollen aber nicht mehr vorgenommen werden, da es sich nicht mehr lohnt.. später wird das projekt auch extern nochmal neu gebaut.. aber.. jetzt soll es erstmal so geändert werden (aufgabe wurde mir so erteilt..)

        wie kann ich daher in mysql + php die spalte "themen" der produkte mit der thementabelle vergleichen? also das ich jede spalte durchgeh.. einen vergleich mach ob "radio & tv" ein thema ist.. und "möbel" ein extra thema und dies dann beim export so trennen kann? evtl. mit subanfrage?

        Kommentar


        • #5
          Zunächst mal benötigen wir die Struktur beider Tabellen und deren genaue Relation. Vorher müssen wir raten.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Was an der ganzen sache sollt eigentlich rekursiv sein??? Ich würde da höchstens ein iterativ sehen.

            Wenn ich dich richtig verstanden habe, dann willst du nur aus

            TV & Radio Möbel

            ein

            TV & Radio, Möbel

            machen, richtig?

            Ich würde evtl. gar ein

            "TV & Radio", "Möbel"

            bevorzugen.

            Das ist eigentlich mit einem einmaligen Suchen und Ersetzen erledigt. Feddisch.

            Kommentar


            • #7
              Ich denke, dass es auch noch andere "Produktthemen" gibt wie z.B. "Computer Hardware" oder "Computer Software". Da reicht kein suchen und ersetzen. Es sei denn, man macht es händisch bei allen Kombinationsmöglichkeiten.

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Ich gehe auch davon aus, dass das nicht die einzigen Kategorien sind. Aber ich bräuchte diese ja nur der Länge nach sortieren und dann zu ersetzen, aus "TV & Radio" mache "TV & Radio,". Und das Komma am Ende des "Gesamtwertes" kann ich ja abschneiden, wenns mir nicht zusagt.

                Aber vielleicht ist mir der Sinn und Zweck auch noch nicht ganz klar geworden.

                Kommentar


                • #9
                  Ich warte mal so lange, bis der TS mit der Db-Struktur und ein paar Beispieldatensätzen ankommt. Dann sehen wir weiter. Vielleicht liege ja ich daneben.

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    hey..
                    also die db-struktur schaut so aus..


                    tabelle produkt:
                    id, name, thema
                    Beispiel:
                    (1,radio xyz, tv & radio elektro)


                    tabelle thema:
                    id, name
                    Beispiel:
                    (1, tv & radio
                    2, elektro)

                    die output wo dann quasi die csv exportiert wird:

                    PHP-Code:
                    $db_artikel->query("SELECT produkt_id as produktID,
                    name as Name ,
                    themenbereiche as Themenbereiche
                    FROM produkte;

                    $datum = date("Ymd");

                    $exportname = "../export.csv";

                    if (file_exists(
                    $exportname))
                        unlink(
                    $exportname);

                    $fp = fopen ($exportname, "w");

                    while (
                    $db_artikel->next_record()) {
                        
                    $row = $db_produkte->Record;
                        for (
                    $i = 0; $i < $columns$i ++) {
                            
                    $out .=''.str_replace("\r","",str_replace("\n","",str_replace('"','',$row["$i"]))).'|';
                        }
                        $out.="\n";
                    }
                    fwrite($fp,$out);

                    fclose($fp); 
                    bei dem csv export soll quasi die themenbereiche statt dem "leerzeichen" (wie´s in der DB ist) dies via sql abfrage die themenbereiche geprüft und dann für den export via "," getrennt werden.
                    das statt "tv & radio elektro" dann "tv & radio, elektro" geschrieben wird
                    Zuletzt geändert von larsoniA; 24.01.2010, 18:24.

                    Kommentar


                    • #11
                      was spricht gegen die replace-variante?

                      Kommentar

                      Lädt...
                      X