Dies ist ein auf ein anderes Problem Follow-up i mit getting-the-last-record-inserted-into-a-select-query hatteden letzten Datensatz der Tabelle erhalten in Auswahlabfrage
Ich versuche, eine Abfrage zu bearbeiten, die Andrea war so freundlich, mich mit gestern zu helfen, die für eine einwandfrei funktioniert Seite, aber ich versuche, eine ähnliche Abfrage ohne viel Glück zu erstellen.
Was muss ich für jedes Board ist das Board Name angezeigt werden, die Anzahl der Themen und zu diesem Board verknüpften Nachrichten und dem Benutzer, Thema und Datum der letzten Meldung (die Arbeit der Fall ist)
Was i Notwendigkeit ist die Platine Namen zu erhalten, das Thema und die Nachricht zählen
Dies ist meine Tabellenstruktur
CREATE TABLE `boards` (
`boardid` int(2) NOT NULL auto_increment,
`boardname` varchar(255) NOT NULL default '',
PRIMARY KEY (`boardid`)
);
CREATE TABLE `messages` (
`messageid` int(6) NOT NULL auto_increment,
`topicid` int(4) NOT NULL default '0',
`message` text NOT NULL,
`author` varchar(255) NOT NULL default '',
`date` datetime(14) NOT NULL,
PRIMARY KEY (`messageid`)
);
CREATE TABLE `topics` (
`topicid` int(4) NOT NULL auto_increment,
`boardid` int(2) NOT NULL default '0',
`topicname` varchar(255) NOT NULL default '',
`author` varchar(255) NOT NULL default '',
PRIMARY KEY (`topicid`)
);
und die Abfrage, die ich mit auf der Grundlage der Abfrage gekommen sind, die Andrea für mich getan hat. Was diese Abfrage im boardname ausgibt, die Anzahl der Themen und Nachrichten (wobei 1 angegeben wird, obwohl es 5 gibt), der Themenautor und der Nachrichtenzähler (der nicht benötigt wird), der Autor und das Datum des letzten Posts (der benötigt wird), aber nicht der Name des Themas, die
SELECT b.boardname, count(DISTINCT t.topicname) AS topics, count(lm.message) AS message, t.author as tauthor,
(select count(message) from messages m where m.topicid = t.topicid) AS messagecount,
lm.author as lauthor, lm.date
FROM topics t
INNER JOIN messages lm
ON lm.topicid = t.topicid AND lm.date = (SELECT max(m2.date) from messages m2)
INNER JOIN boards b
ON b.boardid = t.boardid
GROUP BY t.topicname
das ist meine ursprüngliche Abfrage benötigt wird, das tut, was ich wollte, aber den ersten Beitrag erhalten, nicht das letzte
SELECT b.boardid, b.boardname, count(DISTINCT t.topicname) AS topics, count(m.message) AS message, m.author AS author, m.date AS date, t.topicname AS topic
FROM boards b
INNER JOIN topics t ON t.boardid = b.boardid
INNER JOIN messages m ON t.topicid = m.topicid
INNER JOIN (
SELECT topicid, MAX(date) AS maxdate
FROM messages
GROUP BY topicid
) test ON test.topicid = t.topicid
GROUP BY boardname
ORDER BY boardname
jede Hilfe bei diesem sehr geschätzt
Genau das habe ich versucht. Nur eine letzte Frage, wie bekomme ich den Spitznamen aus der Tabelle Themen, die ich denke, würde mit der Themen-ID und Autorenname verknüpft werden? – AdRock
Siehe aktualisierten Beitrag – Quassnoi