[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
mysql Abfrage - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
muero-gbr
Beiträge: 34
Registriert: 27. Feb 2006, 19:04

mysql Abfrage

6. Feb 2009, 14:54

Hallo,

Ich habe in einer Tabelle mehrere Einträge gleicher ID.
z.B.
ID Wert1 Wert2
1 54 3
1 51 4
1 55 8
2 2 3
2 58 65

Ich möchte nun daraus eine Abfrage erstellen, die mir folgendes Resultet liefert:

1 54 3 51 4 55 8
2 2 3 58 65

Ist dies überhaupt möglich?
Ich habe es versucht mit einem Inner Join, aber irgendwie ist es nicht das, was ich brauche.

Vielen Dank! Grüße
Thomas

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

6. Feb 2009, 15:17

Hi Thomas,

das geht ganz einfach mit GROUP_CONCAT()
http://dev.mysql.com/doc/refman/5.0/en/ ... oup-concat

Grüße,
Markus

muero-gbr
Beiträge: 34
Registriert: 27. Feb 2006, 19:04

6. Feb 2009, 17:57

Hallo,

danke für den obigen Hinweis, funktioniert super.
Nun habe ich noch ein anderes Problem, aber ich denke es betrifft Redaxo und weniger mysql.

Kann es sein, dass die Redaxo sql-Klasse keine Umlaute verträgt, wenn ich über die Funktion getarray() abfrage?
Hier meine Abfrage per $sql->getarray();

Code: Alles auswählen

Select artikel_idartikel from merkmale where artikel_idartikel in (SELECT artikel_idartikel FROM variante_has_artikel WHERE variante_idvariante = '24') and artikel_idartikel in (SELECT artikel_idartikel FROM merkmale where CONCAT(merkmale.eigenschaften_ideigenschaften, ' ',merkmale.wert) = 
'37 grün' ) 
GROUP BY artikel_idartikel ORDER BY eigenschaften_ideigenschaften
Bei PHPmyadmin liefert diese Anfrage Zeilen zurück, über die Klasse von Redaxo nicht.
Danach habe ich alles von grün auf gruen umgeschrieben und siehe da, auch über getarray() funktioniert es nun.

Grüße Thomas

nik
Beiträge: 112
Registriert: 9. Dez 2008, 21:17

6. Feb 2009, 18:14

Das hängt mit der Kollation der Datenbank(tabelle) und dem Zeichensatz von Redaxo zusammen. Redaxo ist in Ansi geschrieben, fragt aber UTF-8 Tabellen ab. Deshalb trägt es genau genommen falsche Zeichen in die Tabelle ein, erwartet diese aber auch beim Auslesen. Ergo: Würdest Du die Ein- und Ausgaben über Redaxo machen gäbe es kein Problem. Nur bei Mischkonfigurationen wirds problematisch.

muero-gbr
Beiträge: 34
Registriert: 27. Feb 2006, 19:04

6. Feb 2009, 18:18

Ah gut danke, an sowas habe ich auch schon mal gedacht.
Dann muss ich die Zeichen umcodieren lassen, dass müsste doch dann gehen

Grüße Thomas

nik
Beiträge: 112
Registriert: 9. Dez 2008, 21:17

6. Feb 2009, 18:40

Vielleicht hilft auch, den Browser unter phpMyAdmin auf latin einzustellen. Wäre nen Versuch wert.

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

7. Feb 2009, 12:32

Hi zusammen,
nik hat geschrieben:Das hängt mit der Kollation der Datenbank(tabelle) und dem Zeichensatz von Redaxo zusammen. Redaxo ist in Ansi geschrieben, fragt aber UTF-8 Tabellen ab. Deshalb trägt es genau genommen falsche Zeichen in die Tabelle ein, erwartet diese aber auch beim Auslesen. Ergo: Würdest Du die Ein- und Ausgaben über Redaxo machen gäbe es kein Problem. Nur bei Mischkonfigurationen wirds problematisch.
Naja dass ist net ganz richtig,...

Wenn man es "richtig" einstellt, also das Backend auf UTF-8, die Datenbank auf UTF-8, dann passt das alles zusammen.

Genauso kann man sowohl die Datenbank als auch REDAXO auf ISO betreiben, dass funktioniert genauso richtig..

Wenn man natürlich die DB in UTF8 betreibt und REDAXO auf ISO brauch man sich da nicht wundern..

Viele Grüße,
Markus

nik
Beiträge: 112
Registriert: 9. Dez 2008, 21:17

8. Feb 2009, 23:03

Wenn man es "richtig" einstellt, also das Backend auf UTF-8, die Datenbank auf UTF-8, dann passt das alles zusammen.
Da wage ich zu widersprechen (Habe das hier auch schon ausgeführt: http://forum.redaxo.de/ftopic11012.html). Die Scripte von Redaxo sind Ansi, deshalb ist auch die DB Verbindung auf Latin-Zeichensatz. Zusätzliche Tabellen meiner UTF-8 eingestellten und mit phpMyAdmin administrierten Datenbank wurden trotz de_de_UTF-8 Einstellung des Backends verstümmelt angezeigt. Vice versa die durch Redaxo gesetzten Datenbankdaten in einer mit UTF-8 eingestellen Ansicht in phpMyAdmin.

Nur wenn alles über Redaxo läuft (inkl. Dateneingabe) und man die Ansicht in pma nciht beachtet, läuft also alles rund.

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

9. Feb 2009, 11:33

Hi,

dann erlaubt dein Datenbankserver den Befehl SET NAMES nicht,..
dort sollte der Zeichensatz der Connection auf UTF-8 umgebogen werden..

Gruß,
Markus

nik
Beiträge: 112
Registriert: 9. Dez 2008, 21:17

9. Feb 2009, 19:54

In meiner Redaxoversion 4.1.0 existiert SET NAMES noch nicht. Das beweist mir die Volltextsuche. Und, doch, meine Datenbank unterstützt das. Genauso wenig wie SET CHARACTER SET 'utf8', mal abgesehen von meiner eigenen Modifikation. Mag sein, dass ihr das in der aktuellen Entwicklerversion drin habt.

Zurück zu „Sonstiges“