Hallo Expertinnen und Experten,
ich hab mal wieder ein Problem:
Ich möchte einen OUTER JOIN auf 2 MySQL-Tabellen anwenden.
Folgendes Szenario, ich habe eine Tabelle buecherstamm, die
(welch eine Logik) die Stammdaten von Büchern enthält. Dann hab
ich eine einfache Tabelle „vorbestellungen“, die über die buchid
mit der Tabelle buecherstamm verknüpft ist. Nun möchte ich als
Ausgabe die buchid, exemplare, verliehen, vorbestellt für
alle Bücher egal ob Vorbestellungen vorhanden sind oder
nicht!
Mein Problem ist: Die Felder exemplare und verliehen werden
durch die Software berechnet & gefüllt, das Feld vorbestellt muß
berechnet werden.
Ich hätte folgenden Ansatz:
SELECT
b.buchid,
b.exemplare,
b.verliehen,
COUNT(v.userid) AS vorbestellt
FROM
vorbestellungen v, buecherstamm b
LEFT OUTER JOIN
vorbestellungen
ON
b.buchid = v.buchid
WHERE
v.status = 0
GROUP BY buchid, exemplare, verliehen
Mit diesem Statement bekomme ich zwar für jedes Buch einen Wert
für „verliehen“, der aber offensichtlich nicht sinnvoll ist. Ich
steig auch bei der Logik nicht durch, scheint so als hätte ich
den Count auf ein Produkt ausgeführt.
Wäre für jede Hilfe dankbar!
MfG
Manuel
Für alle die’s selber ausprobieren möchten hier noch die Testumgebung:
CREATE TABLE buecherstamm (
buchid int(10) NOT NULL auto\_increment,
isbn varchar(15) NOT NULL default '',
titel varchar(255) NOT NULL default '',
autoren varchar(255) NOT NULL default '',
beschreibung text NOT NULL,
image varchar(140) NOT NULL default '',
info varchar(100) NOT NULL default '',
ftp varchar(140) NOT NULL default '',
exemplare int(10) NOT NULL default '0',
verliehen int(10) unsigned default '0',
verlagid int(10) NOT NULL default '0',
kategorie int(10) NOT NULL default '0',
PRIMARY KEY (buchid)
) TYPE=MyISAM;
INSERT INTO buecherstamm VALUES (1, '3827220203', 'SQL in 21 Tagen . Die Datenbank-Abfragesprache SQL vollständig erklärt', 'Stephans', '', 'src=