Um es zu verstehen hab ich $ref stückweise zerlegt und mir die einzelnen Ergebnisse erst mal ausgeben lassen.
Nein, du solltest dir $ref *im Ganzen* ausgeben lassen, dann hättest du gesehen, dass die Referenz in etwa folgende Struktur hat:
array ( array ('GTH', 'EF'),
array ('L', 'DD'),
array ('HRO', 'HGW')
)
Dann kannst du dereferenzieren:
push @deref, @{$ref};
Damit kopierst du die Referenz in ein Array, das genau die gleiche Struktur wie deine Referenz hat. Da du das aber so nicht willst, musst du die Elemente durchgehen, derefernzieren und die inneren Arrays zusätzlich zusammenfügen (dafür gibt es join). Das Ganze verkürzt:
foreach(@{$ref}) {
push @deref, join(';', @{$_});
}
Das Ergebnis sieht wie folgt aus:
@deref: [0] : 'GTH;EF'
[1] : 'L;DD'
[2] : 'HRO;HGW'
Und genau das kannst du bereits in deiner SQL-Abfrage mit Hilfe der Stringfunktionen regulieren:
SELECT
CONCAT( akz1, ';', akz2 ) AS kennzeichenliste
FROM
tabelle
Dann kannst du dir den ganzen Kram mit Dereferenzieren usw. sparen, da die Ergebnistabelle bereits das ist, was du suchst.
Sinn der Ausgabe ~: In der Datenbank befinden sich x Datensätze mit den KFZ-Kennzeichen ABC, x mit DEF usw., die in beiden Rubriken akz1 und akz2 vorkommen. Wenn in der Rubrik akz1 und akz2 allerdings das gleiche Kennzeichen steht, der Datensatz also in nur einer Rubrik gelistet ist, wurde der Datensatz auch nur ein mal gezählt.
Ich bin mir ziemlich sicher, dass sich auch dies über SQL lösen ließe, da ich aber nicht gerade die MySQL-Leuchte bin, mögen sich andere dazu äußern :)
Siechfred
Ich bin strenggenommen auch nur interessierter Laie. (molily)