# MySql Summe



## Coldstorm (28. Jan 2010)

Ich hab bis morgen eine Aufgabe auf. Dabei geht es um eine Zeugnisnote, wenn ich es vorstelle. Es ist aber nicht ganz einfach. Ich hab schon meine Vorschläge. Aber vor allem die letzte Aufgabe gibt mir zu schaffen. Ich stelle das hier ins Forum, weil ich von den Leuten hier überzeugt bin und hier viele auch mehr als Java gut können.
Was haltet ihr davon?
Ich hab hier folgende Datenbank, hier der Dump:

```
--
-- Tabellenstruktur für Tabelle `bank`
--

CREATE TABLE IF NOT EXISTS `bank` (
  `BLZ` int(11) NOT NULL,
  `Bezeichnung` varchar(50) NOT NULL,
  `GruendDat` date NOT NULL,
  PRIMARY KEY (`BLZ`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `bank`
--

INSERT INTO `bank` (`BLZ`, `Bezeichnung`, `GruendDat`) VALUES
(74067000, 'Postbank Essen', '1992-01-24'),
(86097000, 'Rottaler Raiffeisenbank eG', '1985-01-30');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `konto`
--

CREATE TABLE IF NOT EXISTS `konto` (
  `KtoNr` int(11) NOT NULL,
  `Kontostand` decimal(10,0) NOT NULL,
  `BLZ` int(11) NOT NULL,
  `InhID` int(11) NOT NULL,
  PRIMARY KEY (`KtoNr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `konto`
--

INSERT INTO `konto` (`KtoNr`, `Kontostand`, `BLZ`, `InhID`) VALUES
(436882431, '7000', 86097000, 1),
(929582434, '2000', 74067000, 2);

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `kontoinhaber`
--

CREATE TABLE IF NOT EXISTS `kontoinhaber` (
  `InhID` int(11) NOT NULL,
  `Name` varchar(120) NOT NULL,
  `GebDat` date NOT NULL,
  `Wohnort` varchar(50) NOT NULL,
  PRIMARY KEY (`InhID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `kontoinhaber`
--

INSERT INTO `kontoinhaber` (`InhID`, `Name`, `GebDat`, `Wohnort`) VALUES
(1, 'Huber', '1986-01-01', 'Ruderting'),
(2, 'Schmid', '1985-01-09', 'Ruderting');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `ueberweisung`
--

CREATE TABLE IF NOT EXISTS `ueberweisung` (
  `ID` int(11) NOT NULL,
  `KtoNr` int(11) DEFAULT NULL,
  `InhID` int(11) DEFAULT NULL,
  `UebDat` date DEFAULT NULL,
  `Zweck` varchar(120) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `KtoNr` (`KtoNr`),
  KEY `InhID` (`InhID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `ueberweisung`
--

INSERT INTO `ueberweisung` (`ID`, `KtoNr`, `InhID`, `UebDat`, `Zweck`) VALUES
(1, 436882431, 1, '2010-01-04', 'ebay Art. 442342'),
(2, 929582434, 2, '2010-01-13', 'Taschengeld'),
(3, 929582434, 1, '2010-01-07', 'Fahrschule 5423432'),
(4, 436882431, 2, '2010-01-09', 'SWP Nachzahlung');

--
-- Constraints der exportierten Tabellen
--

--
-- Constraints der Tabelle `ueberweisung`
--
ALTER TABLE `ueberweisung`
  ADD CONSTRAINT `ueberweisung_ibfk_1` FOREIGN KEY (`KtoNr`) REFERENCES `konto` (`KtoNr`),
  ADD CONSTRAINT `ueberweisung_ibfk_2` FOREIGN KEY (`InhID`) REFERENCES `kontoinhaber` (`InhID`);
```

Und im Anhang ein ER-Diagramm:

Ich hab folgende Aufgaben, die ich noch machen muss und nicht weiter weiß...

1. Wie lautet die SQL.Anweisung, die die Summe aller Überweisungen auf alle Konten von Herrn Huber aus Ruderting(über Name und Wohnort) ermittelt.

Mein Ansatz:

```
SELECT SUM(u.ID) FROM ueberweisung u join
konto k on u.KtoNr = k.KtoNr join
kontoinhaber ki on u.InhID = ki.InhID
WHERE ki.Name like 'Huber' and ki.Wohnort like 'Ruderting'
```

Hier zeigt er mir 4 an, es sollten aber nur zwei sein...sum(u.ID) ist falsch oder?

2. Geben Sie die Regeln an, die ein OOP-Generator beachten müsste, wenn er die Bsp.-Datenstruktur
in folgendes objektorientiertes Modell konvertierte(Anhang)
Da hab ich irgendwie keine Vorstellung, was gewollt wird...??


----------



## Firestorm87 (28. Jan 2010)

Sorry, dass Ich mir nun nicht den ganzen DB aufbau reinprügeln möchte, aber was ergibt denn:

```
SELECT * FROM ueberweisung u join
konto k on u.KtoNr = k.KtoNr join
kontoinhaber ki on u.InhID = ki.InhID
WHERE ki.Name like 'Huber' and ki.Wohnort like 'Ruderting'
```

Wenn dort dann alle überweisungen auftauchen, kann man das leicht eingrenzen...
Aber vll fällt dir so mal auf was "zuviel" da ist..

/EDIT: Ansonsten ist sum() schon der passende Ansatz!
Aber irgendwas stimmt mit deinen joins eben noch nicht


----------



## Coldstorm (28. Jan 2010)

Das ergibt(Anhang)...das was ich suche, nur die Summe brauche ich halt...
muss ich auch noch group by machen?

Aber das schwierigste ist Aufgabe 2...hast du dazu auch ne Idee ?


----------



## Firestorm87 (28. Jan 2010)

sum... jaaaaa.... ok ich geb mich geschlagen 
ID1 und ID3 ausgewählt...
1+3 = 4 

Versuchs mal mit count(*) statt sum(u.ID) 

/EDIT: Daher sagt mama immer "Erst überlegen, dann sprechen"... sollte ich mir mal angewöhnen..


----------



## Coldstorm (28. Jan 2010)

ok, danke war echt nur ne Kleinigkeit...
So passt es:

```
SELECT COUNT(*) FROM ueberweisung u JOIN
konto k ON u.KtoNr = k.KtoNr JOIN
kontoinhaber ki ON u.InhID = ki.InhID
WHERE ki.Name LIKE 'Huber' AND ki.Wohnort LIKE 'Ruderting'
```

Aber die zweite Frage verstehe ich irgendwie ned, hat da jemand eine Idee ?
Es wird irgendwie nach den Regeln gefragt, wenn man das ER-Diagramm
mit einem OOP-Generator in ein Klassendiagramm umwandelt(im Anhang oben).


----------



## Coldstorm (28. Jan 2010)

Weiß das jemand?
Hier nochmal ne größere Version, war leider etwas zu klein sry, kein Wunder, dass keiner antwortet.


----------

