Announcement

Collapse
No announcement yet.

Group_concat 1024 Zeichen. Workaround

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Group_concat 1024 Zeichen. Workaround

    Hallo, ich habe bei einer Abfrage leider group_concat benutzt. Ich wusste nicht, dass group_concat nur 1024 Zeichen zurueckgibt.
    Jetzt suche ich einen Weg, eine Abfrage zu bauen, die als Resultat das gleiche liefert wie die Abfrage mit Group_concat nur ohne group_concat
    Sie muss das gleich Resultat liefern, dann das Resultat wird von einer anderen Komponente im php genau so weiterverarbeitet. Ich komme da leider nicht weiter. Es geht um eine Adressverwaltung.

    Code:
    			
    SELECT 
        values.record as record,
        data.name as DataName,
        recordauths.hash,
        group_concat(valuestyp.name,0x3a,values.name order by valuestyp.name asc SEPARATOR 0x2c) as Adresses
    FROM 
        vendors 
        INNER JOIN data ON vendors.id = data.vendorid 
        INNER JOIN valuestyp ON data.id = valuestyp.dataid 
        INNER JOIN values ON valuestyp.id = values.valuestypid
        INNER JOIN recordauths on values.record=recordauths.recordid
    WHERE
        vendors.token ='123467789'
    GROUP BY 
        values.record asc
    Wenn jetzt values.name mehr als 1024 Zeichen hat, liefert meine Anfrage halt nichtmehr das Resultat was ich mir vorstellen.

    Ich habe es schon mit subqueys anstatt group_concat versucht, bin aber gescheitert.

    Für Lösungsvorschläge wäre ich sehr dankbar.

    edit: hab jetzt die letzten 3h mir selber mit php nen group_concat gebaut so wie ich das genau haben will. aber trotzdem würde mir eine lösung in mysql besser gefallen.
    Zuletzt editiert von xhammerx; 22.07.2012, 03:49.

  • #2
    Mir ist keine Möglichkeit bekannt, außer eine eigene Stored Proc oder eine Client Lösung, so wie Du es anscheinend gemacht hast.

    Man kann den Parameter für die Ergebnisgröße (1024 = Default) aber auch ändern, sagt die Hilfe. Vielleicht reichen Dir ja ein paar bytes mehr...
    Echte Kontrolle hast Du aber nur mit eigenem Code..

    Hier ist noch ein PDF, das einige (alle?) Möglichkeiten beschreibt.
    http://datacharmer.org/downloads/piv...es_mysql_5.pdf
    Zuletzt editiert von defo; 22.07.2012, 09:27.
    Gruß, defo

    Comment


    • #3
      ja danke dir, hab das jetzt mit php code gelößt. ich hole mir quasi
      Code:
      concat(valuestyp.name,0x3a,values.name)
      und baue mir dann nen string zusammen.

      ich schreibe ein joomla plugin, und da kann ich nicht erwarten, dass die leute den puffer bei group_concat vergrößern.

      Comment


      • #4
        Natürlich gibt es da eine Lösung, eine einfache sogar. Manual lesen hätte in diesem Fall geholfen

        [highlight=sql]SET [GLOBAL | SESSION] group_concat_max_len = val;[/highlight]
        Für deinen Fall natürlich eher als Session-Variable. Das ganze am besten direkt nach dem Verbindungsaufbau für die aktive Session zuweisen - Problem gelöst.

        Siehe http://dev.mysql.com/doc/refman/5.0/...concat_max_len

        Comment

        Working...
        X