Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Folgeabfrage aus dem Ergebnis generieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.07.2003
    Ort
    Tirschenreuth
    Beiträge
    81

    Folgeabfrage aus dem Ergebnis generieren

    Hallo,

    irgendwie fehlt mir hier der Ansatz, wie man das machen könnte. Die Suche nach einer Lösung fällt alleine deshalb schwer, weil ich nicht weiss unter was genau das fällt.

    Ich bekomme aus einer Abfrage die Daten aus 4 Spalten (Warenzusammenetzungen). Hier die a_produkt.tkgschl01-04. Das sind aber nur Kürzel. Jetzt müsste ich aus zwei weiteren Tabellen für jede Spalte wieder die Daten holen.
    SELECT a_text.postext FROM a_contain, a_text where a_text.tabnameidnr = a_contain.idnr_contain and a_produkt.tkgschl01 = a_contain.idnr_contain and
    a_contain.containsatzart = 'TKG'

    Wie genau macht man das ??? (Muss ich da wirklich 4 separate Abfragen machen ??)

    Das ist der Select für die restlichen Daten. Dann fehlt mir aber noch die Warenzusammensetzungen.

    $SQL_groesse="SELECT
    a_ean.artikel AS artikel,
    a_ean.modell AS modell,
    a_ean.farbe AS farbe,
    a_ean.bssrstposkey AS bssrstposkey,
    a_ean.groesse AS groesse,
    a_ean.eancode AS eancode,
    a_prslstgr.prs2 AS prs2,
    a_produkt.tkgschl01 AS tkgschl01,
    a_produkt.tkgprz01 AS tkgprz01,
    a_produkt.tkgschl02 AS tkgschl02,
    a_produkt.tkgprz02 AS tkgprz02,
    a_produkt.tkgschl03 AS tkgschl03,
    a_produkt.tkgprz03 AS tkgprz03,
    a_produkt.tkgschl04 AS tkgschl04,
    a_produkt.tkgprz04 AS tkgprz04
    FROM
    a_ean, a_prslst, a_prslstgr, a_produkt
    WHERE
    a_ean.finu = " . $rs['finu'] . "
    AND
    a_ean.artikel = " . $rs['artikel'] . "
    AND
    a_ean.modell = " . $rs['modell'] . "
    AND
    a_ean.farbe = " . $rs['farbe'] . "
    AND
    a_ean.bssrasterkey = " . $rs['bssrasterkey'] . "
    AND
    a_ean.prdart = 'FT'
    AND
    a_ean.artikel = a_prslst.artikel
    AND
    a_ean.modell = a_prslst.modell
    AND
    a_ean.bssrasterkey = a_prslstgr.raster
    AND
    a_ean.bssrstposkey = a_prslstgr.rstpos
    AND
    a_prslst.idnr_prslst = a_prslstgr.idnr_prslst
    AND
    a_prslst.prdart = 'FT'
    AND
    a_prslst.saison = " . $HTTP_POST_VARS['txt_Saison'] . "
    AND
    a_prslst.pl = " . $HTTP_POST_VARS['txt_Pl'] . "
    AND
    a_ean.artikel = a_produkt.artikel
    AND
    a_ean.modell = a_produkt.modell
    AND
    a_produkt.prdart = 'FT'
    ORDER BY 1,2,3,4

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.07.2003
    Ort
    Tirschenreuth
    Beiträge
    81
    Guten Abend noch einmal,

    vielleicht sollte ich einfach die Frage nur virtuell stellen, denn scheinbar hilft das reine Niederschreiben.

    Ich mach ne for Schleife und hole mir die der Reihe nach.

    Auf das wäre ich vorher nicht gekommen.

    Sorry und danke

    Wackeldackel

  3. #3
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von wackeldackel Beitrag anzeigen
    Ich bekomme aus einer Abfrage die Daten aus 4 Spalten (...) Jetzt müsste ich aus zwei weiteren Tabellen für jede Spalte wieder die Daten holen.
    SELECT a_text.postext FROM a_contain, a_text where a_text.tabnameidnr = a_contain.idnr_contain and a_produkt.tkgschl01 = a_contain.idnr_contain and
    a_contain.containsatzart = 'TKG'
    Kannst du ein einfaches Beispiel posten, wie das Ergebnis aussehen soll?
    Lass dabei dann bitte alles unnötige weg.

    Mal ganz einfach gesagt: Wenn du für jede der vier Spalten noch zusätzliche Spalten im Ergebnis haben willst, im Prinzip also postext_zu_1, postext_zu_2, postext_zu_3, postext_zu_4, dann wird es irgendwie auf einen JOIN hinauslaufen.

    Wenn du die Daten "untereinander" brauchst, also für jede der vier Spalten zusätzliche Zeilen im Ergebnis, dann brauchst du UNION.

    Zitat Zitat von wackeldackel Beitrag anzeigen
    Code:
    a_ean.finu = " . $rs['finu'] . "
    (...)
    a_prslst.saison = " . $HTTP_POST_VARS['txt_Saison']  . "
    Hier (und an den ganzen anderen Stellen) fehlen im Query Apostrophe um die Daten.
    Außerdem hoffe ich, dass die Daten escaped sind - hast du dich davon überzeugt?
    Ansonsten ist das eine Sicherheitslücke: http://de.wikipedia.org/wiki/SQL-Injektion

    Zitat Zitat von wackeldackel Beitrag anzeigen
    Code:
    ORDER BY  1,2,3,4
    Das bringt nichts.

    Warum fangen eig. alle Tabellennamen mit a_ an?

  4. #4
    Registrierter Benutzer
    Registriert seit
    28.07.2003
    Ort
    Tirschenreuth
    Beiträge
    81
    Hallo Bluescreen3D,

    1. a_ean ist der Tabellenname. Ist halt einfacher, da in verschiedenen Tabellen gleiche Spaltennamen vorhanden sind. Ausserdem hatte ich ohne diese Angaben kleine Probleme. Evtl. liegt es daran, dass es eine Informix DB ist.

    2. Das mit der Abfrage habe ich jetzt separat gelöst. Ich frage die Daten extra ab, da diese je immer gleich wären und es effizienter ist, einmal einen Datensatz zu holen, als 50 mal den gleichen.

    3. Das mit der SQL Injection ist das kleinste Problem, da nur intern benutzt und ausserdem die geprüft werden. (Zahlen)

    4. Ich habe den Ausschnitt rauskopiert und dabei scheinbar einiges vergessen


    Gruss Wackeldackel

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •