Ich hoffe das ist ein „korrekter“ Lösungsweg. Genauers kann
ich morgen posten.
Es ist mindestens ein möglicher Weg . Wie weit sich das dann Optimieren lässt liegt auch offt an der Weiterverarbeitung der Daten .
Machmal ist eine Extra Tabelle (auch temporär) der schnellere Weg als PHP alleine .
Ich hab 100000 Einträge , da wären 100000 querys einfach viel zu viel , das kann die Datenbank selber besser (z.b. mit prozeduren oder funktionen oder views) .
sowas wäre eine Frage im Board Datenbanken
Aber da wir gerade heir sind
wie siehts denn hier mit aus :
SELECT produkt.Produktname , anschluss.Anschlussname , drahtlos.Drahtlosname
FROM produkt
JOIN anschluss_beziehung
ON produkt.ProduktID = anschluss_beziehung.ProduktID
JOIN drahtlos_beziehung
ON drahtlos_beziehung.ProduktID = produkt.ProduktID
JOIN anschluss
ON anschluss.AnschlussID = anschluss_beziehung.AnschlussID
JOIN drahtlos
ON drahtlos_beziehung.DrahtlosID = drahtlos.DrahtlosID
macht
Produktname Anschlussname Drahtlosname
Speed PC USB WLAN
Speed PC USB Bluetooth
Speed PC eSata WLAN
Speed PC eSata Bluetooth
Power PC USB WLAN
Power PC Firewire WLAN
Speed PC II USB WLAN
Speed PC II USB Bluetooth
Speed PC II USB Infrarot
Speed PC II Firewire WLAN
Speed PC II Firewire Bluetooth
Speed PC II Firewire Infrarot
Speed PC II eSata WLAN
Speed PC II eSata Bluetooth
Speed PC II eSata Infrarot
die sql datei dazu
– Host: localhost
– Erstellungszeit: 17. April 2011 um 17:16
– Server Version: 5.1.36
– PHP-Version: 5.3.0
SET SQL_MODE=„NO_AUTO_VALUE_ON_ZERO“;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
–
– Datenbank: helptheworld
–
– Tabellenstruktur für Tabelle anschluss
CREATE TABLE IF NOT EXISTS anschluss
(
AnschlussID
int(11) NOT NULL AUTO_INCREMENT,
Anschlussname
varchar(255) NOT NULL,
PRIMARY KEY (AnschlussID
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
–
– Daten für Tabelle anschluss
INSERT INTO anschluss
(AnschlussID
, Anschlussname
) VALUES(1, ‚USB‘);
INSERT INTO anschluss
(AnschlussID
, Anschlussname
) VALUES(2, ‚Firewire‘);
INSERT INTO anschluss
(AnschlussID
, Anschlussname
) VALUES(3, ‚eSata‘);
–
– Tabellenstruktur für Tabelle anschluss_beziehung
CREATE TABLE IF NOT EXISTS anschluss_beziehung
(
ProduktID
int(11) NOT NULL,
AnschlussID
int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
–
– Daten für Tabelle anschluss_beziehung
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(1, 1);
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(1, 3);
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(2, 1);
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(2, 2);
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(3, 1);
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(3, 2);
INSERT INTO anschluss_beziehung
(ProduktID
, AnschlussID
) VALUES(3, 3);
–
– Tabellenstruktur für Tabelle drahtlos
CREATE TABLE IF NOT EXISTS drahtlos
(
DrahtlosID
int(11) NOT NULL AUTO_INCREMENT,
Drahtlosname
varchar(255) NOT NULL,
PRIMARY KEY (DrahtlosID
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
–
– Daten für Tabelle drahtlos
INSERT INTO drahtlos
(DrahtlosID
, Drahtlosname
) VALUES(1, ‚WLAN‘);
INSERT INTO drahtlos
(DrahtlosID
, Drahtlosname
) VALUES(2, ‚Bluetooth‘);
INSERT INTO drahtlos
(DrahtlosID
, Drahtlosname
) VALUES(3, ‚Infrarot‘);
–
– Tabellenstruktur für Tabelle drahtlos_beziehung
CREATE TABLE IF NOT EXISTS drahtlos_beziehung
(
ProduktID
int(11) NOT NULL,
DrahtlosID
int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
–
– Daten für Tabelle drahtlos_beziehung
INSERT INTO drahtlos_beziehung
(ProduktID
, DrahtlosID
) VALUES(1, 1);
INSERT INTO drahtlos_beziehung
(ProduktID
, DrahtlosID
) VALUES(1, 2);
INSERT INTO drahtlos_beziehung
(ProduktID
, DrahtlosID
) VALUES(2, 1);
INSERT INTO drahtlos_beziehung
(ProduktID
, DrahtlosID
) VALUES(3, 1);
INSERT INTO drahtlos_beziehung
(ProduktID
, DrahtlosID
) VALUES(3, 2);
INSERT INTO drahtlos_beziehung
(ProduktID
, DrahtlosID
) VALUES(3, 3);
–
– Tabellenstruktur für Tabelle produkt
CREATE TABLE IF NOT EXISTS produkt
(
ProduktID
int(11) NOT NULL AUTO_INCREMENT,
Produktname
varchar(255) NOT NULL,
PRIMARY KEY (ProduktID
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
–
– Daten für Tabelle produkt
INSERT INTO produkt
(ProduktID
, Produktname
) VALUES(1, ‚Speed PC‘);
INSERT INTO produkt
(ProduktID
, Produktname
) VALUES(2, ‚Power PC‘);
INSERT INTO produkt
(ProduktID
, Produktname
) VALUES(3, ‚Speed PC II‘);