[MySQL 4.1] @var := 'hallo'

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

  • #16
    Hab mir gerade nochmal deine Query angeschaut...

    Warum bildest du kein Join über my_id und tab? Etwa so :
    PHP-Code:

    SELECT 
    name_short
    ,
    name_long,
    @
    my_id := id, @inhalt inh, (@inhalt:=NULL)
    FROM tab1 LEFT JOIN 
    (
    SELECT tab1_id 
    @
    inhalt:=CONCAT(@inhaltwertx', ')) 
    FROM tab2 
    on tab1.id tab2.tab1_id

    WHERE
    x
    =y
    Nur son Gedanke , habe jetzt nicht geprüft ob das Sinn macht
    Zuletzt geändert von chansel0049; 09.06.2005, 11:21.
    chansel0049
    ----------------------------------------------------
    if you've reached the bottomline - dig further!
    Übersetzer gesucht? http://www.babelport.com

    Kommentar


    • #17
      Da geb ich dir recht, das mit dem @my_id macht nicht wirklich Sinn, das kann ich auch mit nem Join lösen.

      Die Gesamtquery ist ja auch ne Ecke komplexer. Bin die ja grade am entwickeln Das Problem ist, das ich zwei verschieden Ergebnisse aus EINER (1) Tabelle brauche.

      Ich habe Kostenpunkte (costpoints) denen werden Quell- und Zielzonen zugewiesen. Das dumme ist nur, ich habe alle Zonenreferenzen in einer Tabelle. Da steht dann zum Beispiel:

      cp_zone_relation_id = n,
      costpoint_id = 1,
      zone_id = 16,
      zone_type = 'target' oder zone_type = 'source'

      Ich hätte Quell- und Zielzonen in jeweils eine separate Tabelle schreiben sollen, dann hätte ich das Problem jetzt nicht. Das dumme ist eben nur, das wir schon zuweit in diesem Prjekt fortgeschritten sind, als das ich sowas Grundliegendes nochmal ändern könnte.

      BTW: Danke für die Hilfe...

      Kommentar


      • #18
        Ahh, das mit dem Join geht nicht, da ich in der "root"-Query schon mal aus der Tabelle Selecte und da joine - das ist ja genau mein Prob - Ich steh echt kurz davor die ganze Applikation umzucoden wegen der Zonen sache... arg!!!


        Achso, ich bekomm die Variable nicht leer.

        Kommentar


        • #19
          Hab jetzt nochmal verschieden Sachen duchgeschaut. Leider bekomme ich die Variable nicht bei jeder Zeile vom "root"-Select für den Subselect geleert.

          Machs jetzt im Script nachgelagert - Dumm ist jetzt nur, das ich den resultierenden Array nach 4 Sachen sortieren muss, was in SQL sehr leicht mit ODER BY gegangen wäre....

          Kommentar


          • #20
            Was ist mit nem nachträglichen setzen auf Null ?

            Weis ja nicht was du willst, aber mit der Query von Dir, leich abgeändert wird m.E. nach die Variable wieder geleert , un das Zeilen weise:

            PHP-Code:
             SET @my_id='';
            SET @inhalt '';
            SELECT 
            name_short
            ,
            name_long,
            @
            my_id := id,

            (
            SELECT 
            @inhalt:=CONCAT(@inhaltwertx', ')) 
            FROM tab2 
            WHERE tab1_id 
            = @my_id
            ) AS inhalt
            @
            inhalt:= NULL

            FROM
            tab1

            WHERE
            x
            =y
            Siehst Du den Zusatz als Pseudo-spalte hinter der Subselect

            Funktioniert das nicht?
            chansel0049
            ----------------------------------------------------
            if you've reached the bottomline - dig further!
            Übersetzer gesucht? http://www.babelport.com

            Kommentar


            • #21
              Habe gerade an einem ähnlichen Thema gesessen und fest gestellt dass es letzlich ganz einfach ist

              Hier mein Versuch (der sowie Funktionierte und auch die Variable entsprechend wieder zurück setzte ) :

              PHP-Code:
               SET @preKunde :=0SET @oids :=0SET @kucnt :=0;
              ... 
              innere Query ... 
              SELECT kundennrbestellnr,
              IF (
              kundennr <> @preKunde , @oids := bestellnr, @oids := concatbestellnr',', @oids )
              )  
              soids,
              IF (
              kundennr <> @preKunde , @kucnt :=1, @kucnt := @kucnt +1
              )  poss,  @preKunde := kundennr resetKunde
              FROM tagesbestellungen
              ORDER BY kundennr
              bestellnr
              ... 
              aus dem dann sowas einfaches wurde wie

              PHP-Code:
              select  kundennr
               
              GROUP_CONCAT(DISTINCT bestellnr ORDER BY bestellnr ASC SEPARATOR ',' )
               
              from tagesbestellungen
              where 
              ....
              group by kundennr 
              Allerdings musste ich sowiese auf 4.1 upgraden..


              Vielleicht hilfts ja noch
              chansel0049
              ----------------------------------------------------
              if you've reached the bottomline - dig further!
              Übersetzer gesucht? http://www.babelport.com

              Kommentar


              • #22
                hey chansel,

                hab deinen post eben zu dem Thema gelesen - hab die Sache wodrums ging mittlerweile anders gelöst. Ich komm aber nächste Woche nochmal an was, wo ich das durchaus gebrauchen können werde....... (komischer satz )

                Aber trotzdem danke...

                Kommentar

                Lädt...
                X