bei diesem Code handelt es sich lediglich um ein Beispiel. Es geht darum eine Funktion zu schreiben die einen zweifachen JOIN ausführt.
320
Artikel
id
baseform
Artikel_Warengruppe
artikelId
warengruppeId
Warengruppe
id
baseform
Warengruppe_Buyer
warengruppeId
buyerId
Buyer
id
name
Beispiel - Datensätze:
Artikel
-
Apfel
-
Birne
-
Gurken
-
Blumenkohl
Warengruppe
-
Obst
-
Gemüse
Buyer
-
Dieter
-
Helmut
SQL-CODE
CREATE TABLE Artikel
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
baseform VARCHAR(128) NOT NULL
);
CREATE TABLE Warengruppe
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
baseform VARCHAR(128) NOT NULL
);
CREATE TABLE Artikel_Warengruppe
(
artikelId INTEGER NOT NULL,
warengruppeId INTEGER NOT NULL,
PRIMARY KEY (artikelId, warengruppeId),
CONSTRAINT FK_artikel FOREIGN KEY (artikelId)
REFERENCES Artikel (id),
CONSTRAINT FK_warengruppe FOREIGN KEY (warengruppeId)
REFERENCES Warengruppe (id)
);
CREATE TABLE Warengruppe_Buyer
(
warengruppeId INTEGER NOT NULL,
buyerId INTEGER NOT NULL,
PRIMARY KEY (warengruppeId, buyerId),
CONSTRAINT FK_warengrupep FOREIGN KEY (warengruppeId)
REFERENCES Warengruppe (id),
CONSTRAINT FK_buyer FOREIGN KEY (buyerId)
REFERENCES Buyer (id)
);
CREATE TABLE buyer
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(128) NOT NULL
);
SQL-Beispieldatensätze
INSERT INTO artikel(baseform) VALUES ( 'Apfel' );
INSERT INTO artikel(baseform) VALUES ( 'Birne' );
INSERT INTO artikel(baseform) VALUES ( 'Gurken' );
INSERT INTO artikel(baseform) VALUES ( 'Blumenkohl' );
INSERT INTO warengruppe(baseform) VALUES ( 'Obst' );
INSERT INTO warengruppe(baseform) VALUES ( 'Gemüse' );
INSERT INTO artikel_warengruppe(artikelId,warengruppeId) VALUES ( '1','1');
INSERT INTO artikel_warengruppe(artikelId,warengruppeId) VALUES ( '2','1');
INSERT INTO artikel_warengruppe(artikelId,warengruppeId) VALUES ( '4','2');
INSERT INTO buyer(`name`) VALUES ( 'Dieter' );
INSERT INTO buyer(`name`) VALUES ( 'Helmut' );
INSERT INTO warengruppe_buyer(warengruppeId,buyerId) VALUES ( '1','1');
INSERT INTO warengruppe_buyer(warengruppeId,buyerId) VALUES ( '1','2');
INSERT INTO warengruppe_buyer(warengruppeId,buyerId) VALUES ( '2','1');
So einen JOIN versuche ich zu realisieren:
SELECT artikel.baseform, warengruppe.baseform, buyer.name
FROM artikel
INNER JOIN artikel_warengruppe ON artikel.id = artikel_warengruppe.artikelId
INNER JOIN warengruppe ON artikel_warengruppe.warengruppeId = warengruppe.id
INNER JOIN warengruppe_buyer ON warengruppe.id = warengruppe_buyer.buyerId
INNER JOIN buyer ON warengruppe_buyer.buyerId = buyer.id
WHERE artikel.baseform LIKE 'Blumenkohl'
Model-Controller-View kommen noch