У меня проблемы с запросом SQL.
SELECT t.topicname, m. *, ms.avatar
FROM `messages` m
INNER JOIN topics t ON m.topicid = t.topicid
inner join users u on m.author=u.username
inner join misc ms on u.userid=ms.userid
ORDER BY postdate DESC LIMIT 5
что я хочу сделать, это получить имя темы из таблицы тем, все из таблицы сообщений и аватар из таблицы misc
Присоединяюсь к таблице тем и сообщений по themeid
Я могу присоединиться к таблице сообщений и пользователей с помощью messages.author и users.username и присоединиться к таблице misc, к которой присоединяюсь к users.userid и misc.userid
Проблема в том, что я не получаю желаемых результатов
Этот запрос работает с объединенными таблицами сообщений и тем, но мне нужно добавить таблицу misc, и единственный способ присоединиться через таблицу пользователей
SELECT t.topicname, m. *
FROM `messages` m
INNER JOIN topics t ON m.topicid = t.topicid
ORDER BY postdate DESC LIMIT 5
Вот структура таблицы
CREATE TABLE `messages` (
`messageid` int(6) NOT NULL auto_increment,
`boardid` int(2) NOT NULL default '0',
`topicid` int(4) NOT NULL default '0',
`message` text NOT NULL,
`author` varchar(255) NOT NULL default '',
`postdate` datetime default NULL,
PRIMARY KEY (`messageid`)
)
CREATE TABLE `misc` (
`miscid` int(4) NOT NULL auto_increment,
`userid` int(4) NOT NULL default '0',
`profpic` varchar(100) NOT NULL default '',
`avatar` varchar(100) NOT NULL default '',
`signature` text NOT NULL,
`alerts` enum('y','n') NOT NULL default 'y',
PRIMARY KEY (`miscid`)
)
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 '',
`counter` int(5) NOT NULL default '0',
`sticky` char(1) NOT NULL default 'n',
`locked` char(1) NOT NULL default 'n',
PRIMARY KEY (`topicid`)
)
CREATE TABLE `users` (
`userid` int(25) NOT NULL auto_increment,
`first_name` varchar(25) NOT NULL default '',
`last_name` varchar(25) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`username` varchar(25) NOT NULL default '',
PRIMARY KEY (`userid`)
)
Это результат запроса только с двумя объединениями, и это то, что я ожидаю получить (только я хочу иметь аватар с ним)
Здесь не очень красиво, но именно это дает мне база данных
topicname messageid boardid topicid message author postdate
Mauris Eu Neque Ipsum 36 4 8 Suspendisse nibh risus, porta at cursus sed, tinci... iTuneStinker 2010-04-08 20:31:39
Aliquam Erat Volutpat 35 5 15 Donec volutpat ligula eu lorem pharetra a adipisci... AwsomeMoon 2010-04-07 21:58:20
Ut Non Risus Elit 34 2 14 Etiam cursus, erat sed placerat fringilla, risus a... ScaryHair 2010-04-07 15:35:34
Quisque Rutrum Mattis Sagittis 33 5 9 Etiam in elit sit amet nulla scelerisque ultricies... ScaryHair 2010-04-07 15:33:46
Where Do I Start Trying To Organise A Festival 32 3 12 Morbi a neque aliquam nisl varius lobortis. Sed ve... ScaryHair 2010-04-07 13:27:40
и вот результат с использованием запроса, объединяющего все таблицы
topicname messageid boardid topicid message author postdate avatar
Forum Rules And Guidelines 2 1 1 FORUM RULES AdRock 2009-04-11 23:05:18 avatar_17200.jpg
Forum Rules And Guidelines 3 2 2 FORUM RULES. AdRock 2009-04-11 23:05:18 avatar_17200.jpg
Forum Rules And Guidelines 4 3 3 FORUM RULES AdRock 2009-04-11 23:05:18 avatar_17200.jpg
Forum Rules And Guidelines 5 4 4 FORUM RULES AdRock 2009-04-11 23:05:18 avatar_17200.jpg
Forum Rules And Guidelines 6 5 5 FORUM RULES AdRock 2009-04-11 23:05:18 avatar_17200.jpg
Первый запрос получает последние 5 записей таблицы сообщений, и это то, что я хочу, но я хочу иметь возможность получить аватар, относящийся к автору каждого сообщения