Hi,
ich versuche mir gerade etwas die Möglichkeiten vom SQL zu erschließen
und hatte irgend wann die Idee zu erkunden, ob man auch auf alternative Art
und Weise eine Matrix zusammenstellen kann.
Höchstwahrscheinlich wird der Ansatz euch total absurt vorkommen
und ggf. "sinnfrei" oder "unperformant" sein,
allerdings würde er für mich sehr viel Erkenntnis bedeuten.
Ich würde mich sehr freuen wenn Ihr euch drauf einlassen würdet
und helfen möchtet meinem Ziel ein Stück näher zu kommen.
Ich habe in meiner Datenbank 3 Tabellen:
- Tabelle "info" speichert Informationen wie z. B. eine Telefonnummer.
- Tabelle "object" speichert Datensätze als Ankerpunkt für ggf. mehrer Informationen und charakterisiert diese Objekt z. B. als Kunden.
- Tabelle "relation" stellt die Verbindung zwischen einem Objekt und einer Information her (1:1, 1:n, n:m)
Meine Datenbank sieht wie folgt aus:
Nun möchte ich die Phrase konstruieren, die mich zu folgender Ergebnis-Tabelle führt:
Bisher bin ich mit folgenden Phrasen nur bedingt nah an mein Ergebnis gekommen:
Das Ergenis des Querys bildet allerdings nicht die verschiedenen Infos als Spalten ab, sondern nur als Zeilen - Aber zugeordnet.
Wie bekomme ich denn das jetzt noch alles zu einer Zeile kumuliert?
Habt Ihr ne Idee?
Vielen Dank schonmal im Voraus!
ich versuche mir gerade etwas die Möglichkeiten vom SQL zu erschließen
und hatte irgend wann die Idee zu erkunden, ob man auch auf alternative Art
und Weise eine Matrix zusammenstellen kann.
Höchstwahrscheinlich wird der Ansatz euch total absurt vorkommen
und ggf. "sinnfrei" oder "unperformant" sein,
allerdings würde er für mich sehr viel Erkenntnis bedeuten.
Ich würde mich sehr freuen wenn Ihr euch drauf einlassen würdet
und helfen möchtet meinem Ziel ein Stück näher zu kommen.
Ich habe in meiner Datenbank 3 Tabellen:
- Tabelle "info" speichert Informationen wie z. B. eine Telefonnummer.
- Tabelle "object" speichert Datensätze als Ankerpunkt für ggf. mehrer Informationen und charakterisiert diese Objekt z. B. als Kunden.
- Tabelle "relation" stellt die Verbindung zwischen einem Objekt und einer Information her (1:1, 1:n, n:m)
Meine Datenbank sieht wie folgt aus:
PHP-Code:
CREATE TABLE IF NOT EXISTS `ROD`.`object` (
`id` INT NOT NULL AUTO_INCREMENT ,
`state` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
CREATE TABLE IF NOT EXISTS `ROD`.`info` (
`id` INT NOT NULL AUTO_INCREMENT ,
`meta` VARCHAR(64) NOT NULL ,
`data` VARCHAR(1024) NOT NULL ,
`state` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
CREATE TABLE IF NOT EXISTS `ROD`.`relation` (
`id` INT NOT NULL AUTO_INCREMENT ,
`roottbl` VARCHAR(64) NOT NULL ,
`rootid` VARCHAR(64) NOT NULL ,
`targettbl` VARCHAR(64) NOT NULL ,
`targetid` VARCHAR(64) NOT NULL ,
`state` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
INSERT INTO `object` (`id`, `state`) VALUES
(1, '1', 1),
(2, '2', 1);
INSERT INTO `info` (`id`, `meta`, `data`, `state`) VALUES
(1, 'kundennummer', '500001', 1),
(2, 'anrede', '1', 1),
(3, 'titel', 'Bsc.', 1),
(4, 'vorname', 'Hans', 1),
(5, 'nachname', 'Wurst', 1),
(6, 'strasse', 'Auf dem Holzweg', 1),
(7, 'hausnummer', '1a', 1),
(8, 'kundennummer', '500002', 1),
(9, 'anrede', '1', 1),
(10, 'vorname', 'Bäm', 1),
(11, 'nachname', 'Lee', 1),
(12, 'strasse', 'Over The Rainbow', 1),
(13, 'hausnummer', '6', 1);
INSERT INTO `relations` (`id`, `roottbl`, `rootid`, `targettbl`, `targetid`, `state`) VALUES
(1, 'object', 1, 'info', 1, 1),
(2, 'object', 1, 'info', 2, 1),
(3, 'object', 1, 'info', 3, 1),
(4, 'object', 1, 'info', 4, 1),
(5, 'object', 1, 'info', 5, 1),
(6, 'object', 1, 'info', 6, 1),
(7, 'object', 1, 'info', 7, 1),
(8, 'object', 2, 'info', 8, 1),
(9, 'object', 2, 'info', 9, 1),
(10, 'object', 2, 'info', 10, 1),
(11, 'object', 2, 'info', 11, 1),
(12, 'object', 2, 'info', 12, 1),
(13, 'object', 2, 'info', 13, 1),
(14, 'object', 2, 'info', 14, 1);
PHP-Code:
===========================================================================================
| kundennummer | anrede | titel | vorname | nachname | strasse | hausnummer |
===========================================================================================
| 500001 | 1 | Bsc. | Hans | Wurst | Auf[...] | 1a |
| 500002 | 1 | | Bäm | Lee | Ove[...] | 6 |
===========================================================================================
PHP-Code:
SELECT object.id, data.meta, data.data
FROM object
RIGHT JOIN
relation AS forthtrace ON object.id=forthtrace.targetid
RIGHT JOIN
info AS data ON forthtrace.rootid=data.id
WHERE object.id=forthtrace.targetid
Wie bekomme ich denn das jetzt noch alles zu einer Zeile kumuliert?
Habt Ihr ne Idee?
Vielen Dank schonmal im Voraus!
Kommentar