Meine Select Anweisung erstelle ich anhand einer Parameter Datei in PHP. In meiner Tabelle sind alle Daten Zeilenweise id, parent_id , name des Wertes und Wert untereinander. Beim auslesen möchte ich alle nach der parent_id zusammen gehörigen Daten in einer Ausgabezeile haben und die Daten aus der zweiten Tabelle dazu.

Funktionieren tut das ja so aber ist bei 500 Datensätzen und 20 Sekunden sehr sehr langsam.

Wenn es eine bessere Lösung gäbe wäre ich Dankbar.

Die Tabellenstruktur
CREATE TABLE IF NOT EXISTS `jos_lichtw_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT '0',
`lft` int(11) NOT NULL DEFAULT '0',
`rgt` int(11) NOT NULL DEFAULT '0',
`parent_seq` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
`wert` varchar(255) NOT NULL DEFAULT '',
`format` int(3) unsigned DEFAULT NULL,
`laenge` char(3) DEFAULT NULL,
`title` varchar(255) NOT NULL DEFAULT '',
`alias` varchar(255) NOT NULL DEFAULT '',
`image` varchar(255) NOT NULL DEFAULT '',
`published` tinyint(1) NOT NULL DEFAULT '0',
`access` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `cat_idx` (`section`,`published`,`access`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `parent_id` (`parent_id`),
KEY `name` (`name`),
KEY `wert` (`wert`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Die sql Abfrage:

SELECT a.* , x.username, x.name, x.email, x.id ,
b.parent_id, b.wert as firma ,
c.parent_id, c.wert as strasse_nr ,
d.parent_id, d.wert as ort ,
e.parent_id, e.wert as plz ,
f.parent_id, f.wert as telefon ,
g.parent_id, g.wert as telefax ,
h.parent_id, h.wert as internet ,
i.parent_id, i.wert as payment ,
j.parent_id, j.wert as rabatt
FROM jos_users x , jos_lichtw_user a , jos_lichtw_user b, jos_lichtw_user c, jos_lichtw_user d, jos_lichtw_user e,
jos_lichtw_user f, jos_lichtw_user g, jos_lichtw_user h, jos_lichtw_user i, jos_lichtw_user j
WHERE a.name LIKE '%adm%'
AND b.name = 'firma'
AND c.name = 'strasse_nr'
AND d.name = 'ort'
AND e.name = 'plz'
AND f.name = 'telefon'
AND g.name = 'telefax'
AND h.name = 'internet'
AND i.name = 'payment'
AND j.name = 'rabatt'
AND a.parent_id = x.id
AND a.parent_id = b.parent_id
AND a.parent_id = c.parent_id
AND a.parent_id = d.parent_id
AND a.parent_id = e.parent_id
AND a.parent_id = f.parent_id
AND a.parent_id = g.parent_id
AND a.parent_id = h.parent_id
AND a.parent_id = i.parent_id
AND a.parent_id = j.parent_id

Besten Dank Ronald