Hallo Chris,
viele Dank für deine schnelle Antwort.
Der Aufbau der PHP-Seite ist sehr langsam bei 2000 Ergebnisse. Meine zusätliche Frage wäre: kann man, wenn man die Seite zum erstenmal aufruft, das MySql-Ergebniss in Session in einem Array speichern?
$results = array();
while ($row = mysql_fetch_array($admin, MYSQL_ASSOC)) {
$results[] = $row;
echo $row[„cd_name“] ." ";
echo $row[„cd_eschreibung“] usw …
}
$_SESSION[‚session_results‘] = $results;
Wie lese ich die Daten danach aus dem Array??
HIER DIE TABELLEN UND SELECT-QUERY:
CREATE TABLE sender_data (
sender_data_id int(11) NOT NULL auto_increment,
sender_id int(11) default ‚0‘,
cd_id int(11) NOT NULL default ‚0‘,
video_id int(11) default NULL,
kassette_id int(11) default NULL,
dvd_id int(11) default NULL,
sender_data_text text,
sender_data_kommentar text,
message_type_id int(11) default ‚0‘,
anzeigen enum(‚Y‘,‚N‘) default ‚Y‘,
PRIMARY KEY (sender_data_id),
UNIQUE KEY sender_data_id (sender_data_id),
KEY sender_id (kanal_id),
KEY cd_id`` (cd_id``),
KEY video_id (video_id),
KEY kassette_id (kassette_id),
KEY dvd_id (dvd_id),
KEY message_type_id (message_type_id)
) TYPE=MyISAM
CREATE TABLE sender (
sender_id int(11) NOT NULL auto_increment,
sender_name varchar(255) NOT NULL default ‚‘,
sender_beschreibung text,
PRIMARY KEY (sender_id),
UNIQUE KEY sender_id (sender_id)
) TYPE=MyISAM
CREATE TABLE cd (
cd_id int(11) NOT NULL auto_increment,
cd_name varchar(255) NOT NULL default ‚‘,
cd_beschreibung text NOT NULL,
cd_message_type int(11) NOT NULL default ‚0‘,
PRIMARY KEY (sender_id),
UNIQUE KEY sender_id (sender_id),
KEY message_type_id (cd_message_type)
) TYPE=MyISAM
CREATE TABLE message_type (
message_type_id int(11) NOT NULL auto_increment,
message_type_name varchar(255) NOT NULL default ‚‘,
PRIMARY KEY (message_type_id),
UNIQUE KEY message_type_id (message_type_id)
) TYPE=MyISAM
CREATE TABLE kassette (
kassette_id int(11) NOT NULL auto_increment,
kassette_name varchar(255) NOT NULL default ‚‘,
kassette_beschreibung varchar(255) NOT NULL default ‚‘,
PRIMARY KEY (kassette_id),
UNIQUE KEY kassette_id (kassette_id)
) TYPE=MyISAM
##############################################################
Die tabellen „video“ und „dvd“ sind z.b. genau so wie kassette (mit id, name, beschreibung).
Die MySQL-Abfrage:
SELECT
kc.sender_code_id,
kc.sender_id,
kc.cd_id,
kc.video_id,
kc.kassette_id,
kc.dvd_id,
kc.sender_code_text,
kc.sender_code_kommentar,
kc.anzeigen,
mt.message_type_name,
mc.cd_name,
v.kassette_name,
s.dvd_name,
f.video,
k.sender_id
FROM
sender_code kc
INNER JOIN sender k ON (kc.sender_id = k.sender_id)
INNER JOIN video f ON (kc.video_id = f.video_id)
INNER JOIN kassette v ON (kc.kassette_id = v.kassette_id)
INNER JOIN dvd s ON (kc.dvd_id = s.dvd_id)
INNER JOIN cd mc ON (kc.cd_id = mc.cd_id)
INNER JOIN message_type mt ON (mc.cd_message_type = mt.message_type_id) AND (kc.message_type_id = mt.message_type_id)
WHERE
(k.sender_id = ‚1‘)
###############################################################
Nach EXPLAIN SELECT …bekomme ich folgende Meldung:
table type possible_keys key key_len ref rows Extra
k const PRIMARY,sender_id PRIMARY 4 const 1
mc ALL PRIMARY,cd_id NULL NULL NULL 298
kc ref sender_id,cd_id,video_id,kassette_id,dvd_id cd_id 4 mc.cd_id 3 where used
v eq_ref PRIMARY,kassette_id PRIMARY 4 kc.kassette_id 1
f eq_ref PRIMARY,video_id PRIMARY 4 kc.video_id 1
s eq_ref PRIMARY,dvd_id PRIMARY 4 kc.dvd_id 1
mt eq_ref PRIMARY,message_type_id PRIMARY 4 kc.message_type_id 1
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]