LarryKante
Grünschnabel
Hi,
Ich hab ein problem mit der korrekten Darstellung(also so wie ich es eigentlich haben möchte ^^) meiner Kreuztabelle...
Folgende Situation:
Ich besitze 2 tabellen in einer Datenbank (phpMyAdmin auf einem Server) um artikel zu verwalten:
Die erste Tabelle ist die Artikel Tabelle. Darin stehen die wichtigsten Information über jeden einzelnen Artikel. Jeder Artikel gehört einer Artikelgruppe an und besitzt eine eigene ArtikelID und ist unterteilt in Farben grössen.
D.h. ich arbeite in 3 Dimensionen: Gruppe, Grösse, Farbe.

Die zweite Tabelle ist die Auftragsposition Tabelle. Darin werden die Gruppe, die ID, Name, und zu einem Eintrag zusammengefasst die Farbe und Grösse (das muss auch so bleiben!) sowie die Menge erfasst.

Der code für die Artikeltabelle:
Der code für die Auftragspositionstabelle:
Folgendermaßen frage ich nun meine Tabelle ab:
Folgende Tabelle wird ausgegeben

Nun das Problem: Wie Ihr seht kommt überall wo die Menge steht eine 5 heraus
. Ich weis nur nicht welche abfrage ich nutzen kann um den realen Wert aus der artik_pos zu bekommen. SUM(artik_pos.menge) ergibt eine 8 was logischerweise zusammengerechnet der Wert aller Mengen in der artik_pos ist. Verwende ich jedoch nur artik_pos.menge wird ein Syntax Error ausgegeben...
Ich weis nun echt nich mehr weiter. Hab schon gesucht aber nix passendes gefunden...
Hab schnell doch nochmal gesucht und etwas gefunden in einem anderem Thread!
Dort hatte einer fast das gleiche Problem. Er löste es mir dem distinct befehl.
Das hab ich auch gleich probiert!
Jetzt bekomm ich überall eine 2 heraus! Das liegt daran, dass der höchste Wert in der Spalte menge in der Tabelle artik_pos eine 2 ist. Ist es eine 3 kommt überall 3 heraus. Muss ich die einzelnen Mengen abfragen evtl. als Array deklarieren und jedes mit eigener Id speichern?
Welche Möglichkeit besteht?
Kann mir bitte jemand weiterhelfen!
Ich hab ein problem mit der korrekten Darstellung(also so wie ich es eigentlich haben möchte ^^) meiner Kreuztabelle...
Folgende Situation:
Ich besitze 2 tabellen in einer Datenbank (phpMyAdmin auf einem Server) um artikel zu verwalten:
Die erste Tabelle ist die Artikel Tabelle. Darin stehen die wichtigsten Information über jeden einzelnen Artikel. Jeder Artikel gehört einer Artikelgruppe an und besitzt eine eigene ArtikelID und ist unterteilt in Farben grössen.
D.h. ich arbeite in 3 Dimensionen: Gruppe, Grösse, Farbe.

Die zweite Tabelle ist die Auftragsposition Tabelle. Darin werden die Gruppe, die ID, Name, und zu einem Eintrag zusammengefasst die Farbe und Grösse (das muss auch so bleiben!) sowie die Menge erfasst.

Der code für die Artikeltabelle:
Code:
--
-- Tabellenstruktur für Tabelle `artik_pos`
--
CREATE TABLE `artik_pos` (
`id` int(10) NOT NULL auto_increment,
`artnr` varchar(255) NOT NULL default '',
`artid` varchar(255) NOT NULL default '',
`bez1` varchar(255) NOT NULL default '',
`bez2` varchar(255) NOT NULL default '',
`look` varchar(255) NOT NULL default '',
`menge` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 ;
--
-- Daten für Tabelle `artik_pos`
--
INSERT INTO `artik_pos` VALUES (1, 'E07664', 'bbb-aaa-111', 'Anouch', 'noir, T1', '133', '2');
INSERT INTO `artik_pos` VALUES (2, 'E07664', 'bbb-aaa-222', 'Anouch', 'noir, T2', '133', '1');
INSERT INTO `artik_pos` VALUES (3, 'E07221', 'aaa-bbb-111', 'Manou', 'blanc, 32', '122', '2');
INSERT INTO `artik_pos` VALUES (4, 'E07222', 'aaa-bbb-222', 'Mandy', 'blanc, 34', '110', '2');
INSERT INTO `artik_pos` VALUES (5, 'E07222', 'aaa-ccc-111', 'Mandy', 'ficelle, 34', '110', '1');
Der code für die Auftragspositionstabelle:
Code:
--
-- Tabellenstruktur für Tabelle `artik_pos`
--
CREATE TABLE `artik_pos` (
`id` int(10) NOT NULL auto_increment,
`artnr` varchar(255) NOT NULL default '',
`artid` varchar(255) NOT NULL default '',
`bez1` varchar(255) NOT NULL default '',
`bez2` varchar(255) NOT NULL default '',
`look` varchar(255) NOT NULL default '',
`menge` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 ;
--
-- Daten für Tabelle `artik_pos`
--
INSERT INTO `artik_pos` VALUES (1, 'E07664', 'bbb-aaa-111', 'Anouch', 'noir, T1', '133', '2');
INSERT INTO `artik_pos` VALUES (2, 'E07664', 'bbb-aaa-222', 'Anouch', 'noir, T2', '133', '1');
INSERT INTO `artik_pos` VALUES (3, 'E07221', 'aaa-bbb-111', 'Manou', 'blanc, 32', '122', '2');
INSERT INTO `artik_pos` VALUES (4, 'E07222', 'aaa-bbb-222', 'Mandy', 'blanc, 34', '110', '2');
INSERT INTO `artik_pos` VALUES (5, 'E07222', 'aaa-ccc-111', 'Mandy', 'ficelle, 34', '110', '1');
Folgendermaßen frage ich nun meine Tabelle ab:
PHP:
SELECT artik_pos.bez1, artikel.bez2,
(SELECT COUNT(artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "32") AS Gr32,
(SELECT COUNT(artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "34") AS Gr34,
(SELECT COUNT(artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "38") AS Gr38,
(SELECT COUNT(artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "42") AS Gr42,
(SELECT COUNT(artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "T2") AS T2,
(SELECT COUNT(artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "T1") AS T1
FROM artik_pos
LEFT JOIN artikel ON artikel.artid = artik_pos.artid
GROUP BY artik_pos.artid ORDER BY artik_pos.bez1
Folgende Tabelle wird ausgegeben

Nun das Problem: Wie Ihr seht kommt überall wo die Menge steht eine 5 heraus

Ich weis nun echt nich mehr weiter. Hab schon gesucht aber nix passendes gefunden...
Hab schnell doch nochmal gesucht und etwas gefunden in einem anderem Thread!
Dort hatte einer fast das gleiche Problem. Er löste es mir dem distinct befehl.
Das hab ich auch gleich probiert!
PHP:
(SELECT COUNT(distinct artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "T1") AS T1,
(SELECT COUNT(distinct artik_pos.menge) FROM artik_pos WHERE artikel.groesse = "T2") AS T2,
//usw...
Welche Möglichkeit besteht?
Kann mir bitte jemand weiterhelfen!