OK, hier mal die Tabellen als Beispiel:
--- Die Personen
CREATE TABLE personen
(
id
int(11) NOT NULL auto_increment,
name
varchar(100) collate latin1_general_ci NOT NULL,
activated
int(11) NOT NULL default '0',
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;
INSERT INTO personen
(id
, name
, activated
) VALUES
(1, 'Peter Schmidt', 1),
(2, 'Peter Mustermann', 1),
(3, 'Peter Nachname', 0);
--- Und die entsprechenden Bewertungen
CREATE TABLE bewertung
(
id
int(11) NOT NULL auto_increment,
person
int(11) NOT NULL,
kommentar
varchar(100) collate latin1_general_ci NOT NULL,
b\_aussehen
tinyint(4) NOT NULL,
b\_charakter
tinyint(4) NOT NULL,
b\_sonstiges
tinyint(4) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;
INSERT INTO bewertung
(id
, person
, kommentar
, b\_aussehen
, b\_charakter
, b\_sonstiges
) VALUES
(1, 1, 'bla', 3, 1, 2),
(2, 1, 'bla2', 1, 2, 1),
(3, 1, 'bla3', 3, 3, 1),
(4, 3, 'wow', 3, 3, 3);
Jetzt nochmal ganz ausführlich, was ich möchte :-)
1. Personen auslesen, wobei ich anch namen suche. Außerdem möchte ich in diesem Fall nur aktiviert Personen. Der erste Ansatz sieht also so aus:
SELECT * FROM personen WHERE name LIKE '%peter%' AND activated='1'
2. Nun möchte ich die Bewertungen dazunehmen. In diesesm Fall jetzt aber maximal 2 Bewertungen (für Person zB 1 gibts ja 3).
Die Spalten b_aussehen, b_charakter und b_sonstiges enthalten die Bewertung (Punkte von 1 bis 3).
Die Bewertung wollte ich folgendermaßen ausrechnen lassen:
SELECT SUM(b_aussehen)/COUNT(b_aussehen) AS AussehenBewertung, SUM(b_charakter)/COUNT(b_charakter) AS CharakterBewertung, SUM(b_sonstiges)/COUNT(b_sonstiges) AS SonstigeBewertung FROM bewertung WHERE person='1' ORDER BY id DESC LIMIT 2
Hier merke ich jedoch gerade, dass den COUNT()s und SUM()s scheinbar das LIMIT egal ist. Die beziehen alle Bewertungen, statt nur 2, mit ein.
3. 1. und 2. möchte ich nun in einer Abfrage kombinieren, wobei auch Personen ausgelesen werden sollen, die noch nicht bewertet worden sind. Desweiteren sollten wie gesagt nur 2. Bewertungen PRO PERSON mit einbezogen werden.
Danke,
Speedy